mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	Use NSX specific RestClient in API implementation (NiciraNvpApi)
- Simplify public API to return Lists instead of NiciraNvpLists
This commit is contained in:
		
							parent
							
								
									c6602ee151
								
							
						
					
					
						commit
						09f7153378
					
				@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					//
 | 
				
			||||||
 | 
					// Licensed to the Apache Software Foundation (ASF) under one
 | 
				
			||||||
 | 
					// or more contributor license agreements.  See the NOTICE file
 | 
				
			||||||
 | 
					// distributed with this work for additional information
 | 
				
			||||||
 | 
					// regarding copyright ownership.  The ASF licenses this file
 | 
				
			||||||
 | 
					// to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					// "License"); you may not use this file except in compliance
 | 
				
			||||||
 | 
					// with the License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing,
 | 
				
			||||||
 | 
					// software distributed under the License is distributed on an
 | 
				
			||||||
 | 
					// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
				
			||||||
 | 
					// KIND, either express or implied.  See the License for the
 | 
				
			||||||
 | 
					// specific language governing permissions and limitations
 | 
				
			||||||
 | 
					// under the License.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package com.cloud.network.nicira;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class NiciraConstants {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static final String SEC_PROFILE_URI_PREFIX = "/ws.v1/security-profile";
 | 
				
			||||||
 | 
					    public static final String ACL_URI_PREFIX = "/ws.v1/acl";
 | 
				
			||||||
 | 
					    public static final String SWITCH_URI_PREFIX = "/ws.v1/lswitch";
 | 
				
			||||||
 | 
					    public static final String ROUTER_URI_PREFIX = "/ws.v1/lrouter";
 | 
				
			||||||
 | 
					    public static final String LOGIN_URL = "/ws.v1/login";
 | 
				
			||||||
 | 
					    public static final String CONTROL_CLUSTER_STATUS_URL = "/ws.v1/control-cluster/status";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static final String ATTACHMENT_PATH_SEGMENT = "/attachment";
 | 
				
			||||||
 | 
					    public static final String NAT_PATH_SEGMENT = "/nat";
 | 
				
			||||||
 | 
					    public static final String LPORT_PATH_SEGMENT = "/lport";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static final String ATTACHMENT_VIF_UUID_QUERY_PARAMETER_NAME = "attachment_vif_uuid";
 | 
				
			||||||
 | 
					    public static final String ATTACHMENT_VLAN_PARAMETER = "attachment_vlan";
 | 
				
			||||||
 | 
					    public static final String ATTACHMENT_GWSVC_UUID_QUERY_PARAMETER = "attachment_gwsvc_uuid";
 | 
				
			||||||
 | 
					    public static final String WILDCARD_QUERY_PARAMETER = "*";
 | 
				
			||||||
 | 
					    public static final String UUID_QUERY_PARAMETER = "uuid";
 | 
				
			||||||
 | 
					    public static final String FIELDS_QUERY_PARAMETER = "fields";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -20,32 +20,39 @@
 | 
				
			|||||||
package com.cloud.network.nicira;
 | 
					package com.cloud.network.nicira;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.lang.reflect.Type;
 | 
					import java.lang.reflect.Type;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.Collections;
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.http.client.protocol.HttpClientContext;
 | 
				
			||||||
 | 
					import org.apache.http.impl.client.CloseableHttpClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.cloud.utils.rest.CloudstackRESTException;
 | 
					import com.cloud.utils.rest.CloudstackRESTException;
 | 
				
			||||||
import com.cloud.utils.rest.RESTServiceConnector;
 | 
					import com.cloud.utils.rest.RESTServiceConnector;
 | 
				
			||||||
import com.cloud.utils.rest.RESTValidationStrategy;
 | 
					import com.google.common.base.Optional;
 | 
				
			||||||
import com.google.gson.JsonDeserializationContext;
 | 
					 | 
				
			||||||
import com.google.gson.JsonDeserializer;
 | 
					import com.google.gson.JsonDeserializer;
 | 
				
			||||||
import com.google.gson.reflect.TypeToken;
 | 
					import com.google.gson.reflect.TypeToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SuppressWarnings("rawtypes")
 | 
					@SuppressWarnings("rawtypes")
 | 
				
			||||||
public class NiciraNvpApi {
 | 
					public class NiciraNvpApi {
 | 
				
			||||||
    protected static final String GET_METHOD_TYPE = "get";
 | 
					 | 
				
			||||||
    protected static final String DELETE_METHOD_TYPE = "delete";
 | 
					 | 
				
			||||||
    protected static final String PUT_METHOD_TYPE = "put";
 | 
					 | 
				
			||||||
    protected static final String POST_METHOD_TYPE = "post";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected static final String SEC_PROFILE_URI_PREFIX = "/ws.v1/security-profile";
 | 
					    private static final Optional<String> ABSENT = Optional.absent();
 | 
				
			||||||
    protected static final String ACL_URI_PREFIX = "/ws.v1/acl";
 | 
					
 | 
				
			||||||
    private static final String SWITCH_URI_PREFIX = "/ws.v1/lswitch";
 | 
					    private static final String SWITCH_URI_PREFIX = NiciraConstants.SWITCH_URI_PREFIX;
 | 
				
			||||||
    private static final String ROUTER_URI_PREFIX = "/ws.v1/lrouter";
 | 
					    private static final String ROUTER_URI_PREFIX = NiciraConstants.ROUTER_URI_PREFIX;
 | 
				
			||||||
    private static final String LOGIN_URL = "/ws.v1/login";
 | 
					
 | 
				
			||||||
 | 
					    private static final String ATTACHMENT_PATH_SEGMENT = NiciraConstants.ATTACHMENT_PATH_SEGMENT;
 | 
				
			||||||
 | 
					    private static final String NAT_PATH_SEGMENT = NiciraConstants.NAT_PATH_SEGMENT;
 | 
				
			||||||
 | 
					    private static final String LPORT_PATH_SEGMENT = NiciraConstants.LPORT_PATH_SEGMENT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final String ATTACHMENT_GWSVC_UUID_QUERY_PARAMETER = NiciraConstants.ATTACHMENT_GWSVC_UUID_QUERY_PARAMETER;
 | 
				
			||||||
 | 
					    private static final String WILDCARD_QUERY_PARAMETER = NiciraConstants.WILDCARD_QUERY_PARAMETER;
 | 
				
			||||||
 | 
					    private static final String UUID_QUERY_PARAMETER = NiciraConstants.UUID_QUERY_PARAMETER;
 | 
				
			||||||
 | 
					    private static final String FIELDS_QUERY_PARAMETER = NiciraConstants.FIELDS_QUERY_PARAMETER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final int DEFAULT_MAX_RETRIES = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final RESTServiceConnector restConnector;
 | 
					    private final RESTServiceConnector restConnector;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -57,8 +64,8 @@ public class NiciraNvpApi {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
        prefixMap = new HashMap<Class, String>();
 | 
					        prefixMap = new HashMap<Class, String>();
 | 
				
			||||||
        prefixMap.put(SecurityProfile.class, SEC_PROFILE_URI_PREFIX);
 | 
					        prefixMap.put(SecurityProfile.class, NiciraConstants.SEC_PROFILE_URI_PREFIX);
 | 
				
			||||||
        prefixMap.put(Acl.class, ACL_URI_PREFIX);
 | 
					        prefixMap.put(Acl.class, NiciraConstants.ACL_URI_PREFIX);
 | 
				
			||||||
        prefixMap.put(LogicalSwitch.class, SWITCH_URI_PREFIX);
 | 
					        prefixMap.put(LogicalSwitch.class, SWITCH_URI_PREFIX);
 | 
				
			||||||
        prefixMap.put(LogicalRouter.class, ROUTER_URI_PREFIX);
 | 
					        prefixMap.put(LogicalRouter.class, ROUTER_URI_PREFIX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -73,32 +80,31 @@ public class NiciraNvpApi {
 | 
				
			|||||||
        }.getType());
 | 
					        }.getType());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        defaultListParams = new HashMap<String, String>();
 | 
					        defaultListParams = new HashMap<String, String>();
 | 
				
			||||||
        defaultListParams.put("fields", "*");
 | 
					        defaultListParams.put(FIELDS_QUERY_PARAMETER, WILDCARD_QUERY_PARAMETER);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NiciraNvpApi() {
 | 
					    private NiciraNvpApi(final Builder builder) {
 | 
				
			||||||
        final List<Class<?>> classList = new ArrayList<Class<?>>();
 | 
					        final Map<Class<?>, JsonDeserializer<?>> classToDeserializerMap = new HashMap<>();
 | 
				
			||||||
        classList.add(NatRule.class);
 | 
					        classToDeserializerMap.put(NatRule.class, new NatRuleAdapter());
 | 
				
			||||||
        classList.add(RoutingConfig.class);
 | 
					        classToDeserializerMap.put(RoutingConfig.class, new RoutingConfigAdapter());
 | 
				
			||||||
        final List<JsonDeserializer<?>> deserializerList = new ArrayList<JsonDeserializer<?>>();
 | 
					 | 
				
			||||||
        deserializerList.add(new NatRuleAdapter());
 | 
					 | 
				
			||||||
        deserializerList.add(new RoutingConfigAdapter());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        restConnector = new RESTServiceConnector(new RESTValidationStrategy(LOGIN_URL), classList, deserializerList);
 | 
					        final NiciraRestClient niciraRestClient = NiciraRestClient.create()
 | 
				
			||||||
 | 
					            .client(builder.httpClient)
 | 
				
			||||||
 | 
					            .clientContext(builder.httpClientContext)
 | 
				
			||||||
 | 
					            .hostname(builder.host)
 | 
				
			||||||
 | 
					            .username(builder.username)
 | 
				
			||||||
 | 
					            .password(builder.password)
 | 
				
			||||||
 | 
					            .loginUrl(NiciraConstants.LOGIN_URL)
 | 
				
			||||||
 | 
					            .executionLimit(DEFAULT_MAX_RETRIES)
 | 
				
			||||||
 | 
					            .build();
 | 
				
			||||||
 | 
					        restConnector = RESTServiceConnector.create()
 | 
				
			||||||
 | 
					            .classToDeserializerMap(classToDeserializerMap)
 | 
				
			||||||
 | 
					            .client(niciraRestClient)
 | 
				
			||||||
 | 
					            .build();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NiciraNvpApi(final String address, final String username, final String password) {
 | 
					    public static Builder create() {
 | 
				
			||||||
        this();
 | 
					        return new Builder();
 | 
				
			||||||
        restConnector.setControllerAddress(address);
 | 
					 | 
				
			||||||
        restConnector.setAdminCredentials(username, password);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setControllerAddress(final String address) {
 | 
					 | 
				
			||||||
        restConnector.setControllerAddress(address);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setAdminCredentials(final String username, final String password) {
 | 
					 | 
				
			||||||
        restConnector.setAdminCredentials(username, password);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -123,8 +129,7 @@ public class NiciraNvpApi {
 | 
				
			|||||||
    private <T> T createWithUri(final T entity, final String uri) throws NiciraNvpApiException {
 | 
					    private <T> T createWithUri(final T entity, final String uri) throws NiciraNvpApiException {
 | 
				
			||||||
        T createdEntity;
 | 
					        T createdEntity;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            createdEntity = restConnector.executeCreateObject(entity, new TypeToken<T>() {
 | 
					            createdEntity = restConnector.executeCreateObject(entity, uri, Collections.<String, String> emptyMap());
 | 
				
			||||||
            }.getType(), uri, Collections.<String, String> emptyMap());
 | 
					 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -145,7 +150,7 @@ public class NiciraNvpApi {
 | 
				
			|||||||
        Map<String, String> params = defaultListParams;
 | 
					        Map<String, String> params = defaultListParams;
 | 
				
			||||||
        if (uuid.isPresent()) {
 | 
					        if (uuid.isPresent()) {
 | 
				
			||||||
            params = new HashMap<String, String>(defaultListParams);
 | 
					            params = new HashMap<String, String>(defaultListParams);
 | 
				
			||||||
            params.put("uuid", uuid);
 | 
					            params.put(UUID_QUERY_PARAMETER, uuid.get());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        NiciraNvpList<T> entities;
 | 
					        NiciraNvpList<T> entities;
 | 
				
			||||||
@ -159,7 +164,7 @@ public class NiciraNvpApi {
 | 
				
			|||||||
            throw new NiciraNvpApiException("Unexpected response from API");
 | 
					            throw new NiciraNvpApiException("Unexpected response from API");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return entities;
 | 
					        return entities.getResults();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -231,8 +236,8 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<SecurityProfile> findSecurityProfile() throws NiciraNvpApiException {
 | 
					    public List<SecurityProfile> findSecurityProfile() throws NiciraNvpApiException {
 | 
				
			||||||
        return findSecurityProfile(null);
 | 
					        return find(ABSENT, SecurityProfile.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -244,8 +249,8 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<SecurityProfile> findSecurityProfile(final String uuid) throws NiciraNvpApiException {
 | 
					    public List<SecurityProfile> findSecurityProfile(final String uuid) throws NiciraNvpApiException {
 | 
				
			||||||
        return find(uuid, SecurityProfile.class);
 | 
					        return find(Optional.fromNullable(uuid), SecurityProfile.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -286,7 +291,7 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<Acl> findAcl() throws NiciraNvpApiException {
 | 
					    public List<Acl> findAcl() throws NiciraNvpApiException {
 | 
				
			||||||
        return findAcl(null);
 | 
					        return findAcl(null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -297,8 +302,8 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<Acl> findAcl(final String uuid) throws NiciraNvpApiException {
 | 
					    public List<Acl> findAcl(final String uuid) throws NiciraNvpApiException {
 | 
				
			||||||
        return find(uuid, Acl.class);
 | 
					        return find(Optional.fromNullable(uuid), Acl.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -332,7 +337,7 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<LogicalSwitch> findLogicalSwitch() throws NiciraNvpApiException {
 | 
					    public List<LogicalSwitch> findLogicalSwitch() throws NiciraNvpApiException {
 | 
				
			||||||
        return findLogicalSwitch(null);
 | 
					        return findLogicalSwitch(null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -343,8 +348,8 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<LogicalSwitch> findLogicalSwitch(final String uuid) throws NiciraNvpApiException {
 | 
					    public List<LogicalSwitch> findLogicalSwitch(final String uuid) throws NiciraNvpApiException {
 | 
				
			||||||
        return find(uuid, LogicalSwitch.class);
 | 
					        return find(Optional.fromNullable(uuid), LogicalSwitch.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -363,100 +368,81 @@ public class NiciraNvpApi {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public LogicalSwitchPort createLogicalSwitchPort(final String logicalSwitchUuid, final LogicalSwitchPort logicalSwitchPort) throws NiciraNvpApiException {
 | 
					    public LogicalSwitchPort createLogicalSwitchPort(final String logicalSwitchUuid, final LogicalSwitchPort logicalSwitchPort) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport";
 | 
					        return createWithUri(logicalSwitchPort, buildLogicalSwitchElementUri(logicalSwitchUuid, LPORT_PATH_SEGMENT));
 | 
				
			||||||
        return createWithUri(logicalSwitchPort, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void updateLogicalSwitchPort(final String logicalSwitchUuid, final LogicalSwitchPort logicalSwitchPort) throws NiciraNvpApiException {
 | 
					    public void updateLogicalSwitchPort(final String logicalSwitchUuid, final LogicalSwitchPort logicalSwitchPort) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport/" + logicalSwitchPort.getUuid();
 | 
					        updateWithUri(logicalSwitchPort, buildLogicalSwitchElementUri(logicalSwitchUuid, LPORT_PATH_SEGMENT, logicalSwitchPort.getUuid().toString()));
 | 
				
			||||||
        updateWithUri(logicalSwitchPort, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void updateLogicalSwitchPortAttachment(final String logicalSwitchUuid, final String logicalSwitchPortUuid, final Attachment attachment) throws NiciraNvpApiException {
 | 
					    public void updateLogicalSwitchPortAttachment(final String logicalSwitchUuid, final String logicalSwitchPortUuid, final Attachment attachment) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport/" + logicalSwitchPortUuid + "/attachment";
 | 
					        updateWithUri(attachment, buildLogicalSwitchElementUri(logicalSwitchUuid, LPORT_PATH_SEGMENT, logicalSwitchPortUuid) + ATTACHMENT_PATH_SEGMENT);
 | 
				
			||||||
        updateWithUri(attachment, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deleteLogicalSwitchPort(final String logicalSwitchUuid, final String logicalSwitchPortUuid) throws NiciraNvpApiException {
 | 
					    public void deleteLogicalSwitchPort(final String logicalSwitchUuid, final String logicalSwitchPortUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport/" + logicalSwitchPortUuid;
 | 
					        deleteWithUri(buildLogicalSwitchElementUri(logicalSwitchUuid, LPORT_PATH_SEGMENT, logicalSwitchPortUuid));
 | 
				
			||||||
        deleteWithUri(uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String findLogicalSwitchPortUuidByVifAttachmentUuid(final String logicalSwitchUuid, final String vifAttachmentUuid) throws NiciraNvpApiException {
 | 
					    public String findLogicalSwitchPortUuidByVifAttachmentUuid(final String logicalSwitchUuid, final String vifAttachmentUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport";
 | 
					        final String uri = buildLogicalSwitchElementUri(logicalSwitchUuid, LPORT_PATH_SEGMENT);
 | 
				
			||||||
        final Map<String, String> params = new HashMap<String, String>();
 | 
					        final Map<String, String> params = buildBasicParametersMap(UUID_QUERY_PARAMETER);
 | 
				
			||||||
        params.put("attachment_vif_uuid", vifAttachmentUuid);
 | 
					        params.put(NiciraConstants.ATTACHMENT_VIF_UUID_QUERY_PARAMETER_NAME, vifAttachmentUuid);
 | 
				
			||||||
        params.put("fields", "uuid");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        NiciraNvpList<LogicalSwitchPort> lspl;
 | 
					        NiciraNvpList<LogicalSwitchPort> niciraList;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            lspl = restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalSwitchPort>>() {
 | 
					            final Type niciraListType = new TypeToken<NiciraNvpList<LogicalSwitchPort>>() {
 | 
				
			||||||
            }.getType(), uri, params);
 | 
					            }.getType();
 | 
				
			||||||
 | 
					            niciraList = restConnector.executeRetrieveObject(niciraListType, uri, params);
 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (lspl == null || lspl.getResultCount() != 1) {
 | 
					        final List<LogicalSwitchPort> lspl = niciraList.getResults();
 | 
				
			||||||
            throw new NiciraNvpApiException("Unexpected response from API");
 | 
					
 | 
				
			||||||
 | 
					        final int listSize = lspl.size();
 | 
				
			||||||
 | 
					        if (listSize != 1) {
 | 
				
			||||||
 | 
					            throw new NiciraNvpApiException("Expected 1 LogicalSwitchPort, but got " + listSize);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final LogicalSwitchPort lsp = lspl.getResults().get(0);
 | 
					        final LogicalSwitchPort lsp = lspl.get(0);
 | 
				
			||||||
        return lsp.getUuid();
 | 
					        return lsp.getUuid();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ControlClusterStatus getControlClusterStatus() throws NiciraNvpApiException {
 | 
					    public ControlClusterStatus getControlClusterStatus() throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = "/ws.v1/control-cluster/status";
 | 
					        final String uri = NiciraConstants.CONTROL_CLUSTER_STATUS_URL;
 | 
				
			||||||
        ControlClusterStatus ccs;
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            ccs = restConnector.executeRetrieveObject(new TypeToken<ControlClusterStatus>() {
 | 
					            return restConnector.executeRetrieveObject(ControlClusterStatus.class, uri, new HashMap<String, String>());
 | 
				
			||||||
            }.getType(), uri, null);
 | 
					 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return ccs;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NiciraNvpList<LogicalSwitchPort> findLogicalSwitchPortsByUuid(final String logicalSwitchUuid, final String logicalSwitchPortUuid) throws NiciraNvpApiException {
 | 
					    public List<LogicalSwitchPort> findLogicalSwitchPortsByUuid(final String logicalSwitchUuid, final String logicalSwitchPortUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport";
 | 
					        final String uri = buildLogicalSwitchElementUri(logicalSwitchUuid, LPORT_PATH_SEGMENT);
 | 
				
			||||||
        final Map<String, String> params = new HashMap<String, String>();
 | 
					        final Map<String, String> params = buildBasicParametersMap(UUID_QUERY_PARAMETER);
 | 
				
			||||||
        params.put("uuid", logicalSwitchPortUuid);
 | 
					        params.put(UUID_QUERY_PARAMETER, logicalSwitchPortUuid);
 | 
				
			||||||
        params.put("fields", "uuid");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        NiciraNvpList<LogicalSwitchPort> lspl;
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            lspl = restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalSwitchPort>>() {
 | 
					            final Type niciraListType = new TypeToken<NiciraNvpList<LogicalSwitchPort>>() {
 | 
				
			||||||
            }.getType(), uri, params);
 | 
					            }.getType();
 | 
				
			||||||
 | 
					            return restConnector.<NiciraNvpList<LogicalSwitchPort>> executeRetrieveObject(niciraListType, uri, params).getResults();
 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (lspl == null) {
 | 
					 | 
				
			||||||
            throw new NiciraNvpApiException("Unexpected response from API");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return lspl;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NiciraNvpList<LogicalRouterPort> findLogicalRouterPortsByUuid(final String logicalRouterUuid, final String logicalRouterPortUuid) throws NiciraNvpApiException {
 | 
					    public List<LogicalRouterPort> findLogicalRouterPortsByUuid(final String logicalRouterUuid, final String logicalRouterPortUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
 | 
					        final String uri = buildLogicalRouterElementUri(logicalRouterUuid, LPORT_PATH_SEGMENT);
 | 
				
			||||||
        final Map<String, String> params = new HashMap<String, String>();
 | 
					        final Map<String, String> params = buildBasicParametersMap(UUID_QUERY_PARAMETER);
 | 
				
			||||||
        params.put("uuid", logicalRouterPortUuid);
 | 
					        params.put(UUID_QUERY_PARAMETER, logicalRouterPortUuid);
 | 
				
			||||||
        params.put("fields", "uuid");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        NiciraNvpList<LogicalRouterPort> lrpl;
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            lrpl = restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
 | 
					            final Type niciraListType = new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
 | 
				
			||||||
            }.getType(), uri, params);
 | 
					            }.getType();
 | 
				
			||||||
 | 
					            return restConnector.<NiciraNvpList<LogicalRouterPort>> executeRetrieveObject(niciraListType, uri, params).getResults();
 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (lrpl == null) {
 | 
					 | 
				
			||||||
            throw new NiciraNvpApiException("Unexpected response from API");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return lrpl;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public LogicalRouter createLogicalRouter(final LogicalRouter logicalRouter) throws NiciraNvpApiException {
 | 
					    public LogicalRouter createLogicalRouter(final LogicalRouter logicalRouter) throws NiciraNvpApiException {
 | 
				
			||||||
@ -469,7 +455,7 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<LogicalRouter> findLogicalRouter() throws NiciraNvpApiException {
 | 
					    public List<LogicalRouter> findLogicalRouter() throws NiciraNvpApiException {
 | 
				
			||||||
        return findLogicalRouter(null);
 | 
					        return findLogicalRouter(null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -480,12 +466,12 @@ public class NiciraNvpApi {
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     * @throws NiciraNvpApiException
 | 
					     * @throws NiciraNvpApiException
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public NiciraNvpList<LogicalRouter> findLogicalRouter(final String uuid) throws NiciraNvpApiException {
 | 
					    public List<LogicalRouter> findLogicalRouter(final String uuid) throws NiciraNvpApiException {
 | 
				
			||||||
        return find(uuid, LogicalRouter.class);
 | 
					        return find(Optional.fromNullable(uuid), LogicalRouter.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public LogicalRouter findOneLogicalRouterByUuid(final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
					    public LogicalRouter findOneLogicalRouterByUuid(final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        return findLogicalRouter(logicalRouterUuid).getResults().get(0);
 | 
					        return findLogicalRouter(logicalRouterUuid).get(0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void updateLogicalRouter(final LogicalRouter logicalRouter, final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
					    public void updateLogicalRouter(final LogicalRouter logicalRouter, final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
				
			||||||
@ -493,100 +479,149 @@ public class NiciraNvpApi {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deleteLogicalRouter(final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
					    public void deleteLogicalRouter(final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid;
 | 
					        deleteWithUri(buildLogicalRouterUri(logicalRouterUuid));
 | 
				
			||||||
        deleteWithUri(uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public LogicalRouterPort createLogicalRouterPort(final String logicalRouterUuid, final LogicalRouterPort logicalRouterPort) throws NiciraNvpApiException {
 | 
					    public LogicalRouterPort createLogicalRouterPort(final String logicalRouterUuid, final LogicalRouterPort logicalRouterPort) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
 | 
					        return createWithUri(logicalRouterPort, buildLogicalRouterElementUri(logicalRouterUuid, LPORT_PATH_SEGMENT));
 | 
				
			||||||
        return createWithUri(logicalRouterPort, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deleteLogicalRouterPort(final String logicalRouterUuid, final String logicalRouterPortUuid) throws NiciraNvpApiException {
 | 
					    public void deleteLogicalRouterPort(final String logicalRouterUuid, final String logicalRouterPortUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport/" + logicalRouterPortUuid;
 | 
					        deleteWithUri(buildLogicalRouterElementUri(logicalRouterUuid, LPORT_PATH_SEGMENT, logicalRouterPortUuid));
 | 
				
			||||||
        deleteWithUri(uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void updateLogicalRouterPort(final String logicalRouterUuid, final LogicalRouterPort logicalRouterPort) throws NiciraNvpApiException {
 | 
					    public void updateLogicalRouterPort(final String logicalRouterUuid, final LogicalRouterPort logicalRouterPort) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport/" + logicalRouterPort.getUuid();
 | 
					        updateWithUri(logicalRouterPort, buildLogicalRouterElementUri(logicalRouterUuid, LPORT_PATH_SEGMENT, logicalRouterPort.getUuid().toString()));
 | 
				
			||||||
        updateWithUri(logicalRouterPort, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void updateLogicalRouterPortAttachment(final String logicalRouterUuid, final String logicalRouterPortUuid, final Attachment attachment) throws NiciraNvpApiException {
 | 
					    public void updateLogicalRouterPortAttachment(final String logicalRouterUuid, final String logicalRouterPortUuid, final Attachment attachment) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport/" + logicalRouterPortUuid + "/attachment";
 | 
					        updateWithUri(attachment, buildLogicalRouterElementUri(logicalRouterUuid, LPORT_PATH_SEGMENT, logicalRouterPortUuid) + ATTACHMENT_PATH_SEGMENT);
 | 
				
			||||||
        updateWithUri(attachment, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NatRule createLogicalRouterNatRule(final String logicalRouterUuid, final NatRule natRule) throws NiciraNvpApiException {
 | 
					    public NatRule createLogicalRouterNatRule(final String logicalRouterUuid, final NatRule natRule) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat";
 | 
					        return createWithUri(natRule, buildLogicalRouterElementUri(logicalRouterUuid, NAT_PATH_SEGMENT));
 | 
				
			||||||
        return createWithUri(natRule, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void updateLogicalRouterNatRule(final String logicalRouterUuid, final NatRule natRule) throws NiciraNvpApiException {
 | 
					    public void updateLogicalRouterNatRule(final String logicalRouterUuid, final NatRule natRule) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat/" + natRule.getUuid();
 | 
					        updateWithUri(natRule, buildLogicalRouterElementUri(logicalRouterUuid, NAT_PATH_SEGMENT, natRule.getUuid().toString()));
 | 
				
			||||||
        updateWithUri(natRule, uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deleteLogicalRouterNatRule(final String logicalRouterUuid, final UUID natRuleUuid) throws NiciraNvpApiException {
 | 
					    public void deleteLogicalRouterNatRule(final String logicalRouterUuid, final UUID natRuleUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat/" + natRuleUuid.toString();
 | 
					        deleteWithUri(buildLogicalRouterElementUri(logicalRouterUuid, NAT_PATH_SEGMENT, natRuleUuid.toString()));
 | 
				
			||||||
        deleteWithUri(uri);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NiciraNvpList<LogicalRouterPort> findLogicalRouterPortByGatewayServiceAndVlanId(final String logicalRouterUuid, final String gatewayServiceUuid, final long vlanId)
 | 
					    public List<LogicalRouterPort> findLogicalRouterPortByGatewayServiceAndVlanId(final String logicalRouterUuid, final String gatewayServiceUuid, final long vlanId)
 | 
				
			||||||
            throws NiciraNvpApiException {
 | 
					                    throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
 | 
					        final String uri = buildLogicalRouterElementUri(logicalRouterUuid, LPORT_PATH_SEGMENT);
 | 
				
			||||||
        final Map<String, String> params = new HashMap<String, String>();
 | 
					        final Map<String, String> params = buildBasicParametersMap(WILDCARD_QUERY_PARAMETER);
 | 
				
			||||||
        params.put("attachment_gwsvc_uuid", gatewayServiceUuid);
 | 
					        params.put(ATTACHMENT_GWSVC_UUID_QUERY_PARAMETER, gatewayServiceUuid);
 | 
				
			||||||
        params.put("attachment_vlan", Long.toString(vlanId));
 | 
					        params.put(NiciraConstants.ATTACHMENT_VLAN_PARAMETER, Long.toString(vlanId));
 | 
				
			||||||
        params.put("fields", "*");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
 | 
					            final Type niciraListType = new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
 | 
				
			||||||
            }.getType(), uri, params);
 | 
					            }.getType();
 | 
				
			||||||
 | 
					            return restConnector.<NiciraNvpList<LogicalRouterPort>> executeRetrieveObject(niciraListType, uri, params).getResults();
 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NiciraNvpList<NatRule> findNatRulesByLogicalRouterUuid(final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
					    public List<NatRule> findNatRulesByLogicalRouterUuid(final String logicalRouterUuid) throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat";
 | 
					        final String uri = buildLogicalRouterElementUri(logicalRouterUuid, NAT_PATH_SEGMENT);
 | 
				
			||||||
        final Map<String, String> params = new HashMap<String, String>();
 | 
					        final Map<String, String> params = buildBasicParametersMap(WILDCARD_QUERY_PARAMETER);
 | 
				
			||||||
        params.put("fields", "*");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<NatRule>>() {
 | 
					            final Type niciraListType = new TypeToken<NiciraNvpList<NatRule>>() {
 | 
				
			||||||
            }.getType(), uri, params);
 | 
					            }.getType();
 | 
				
			||||||
 | 
					            return restConnector.<NiciraNvpList<NatRule>> executeRetrieveObject(niciraListType, uri, params).getResults();
 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public NiciraNvpList<LogicalRouterPort> findLogicalRouterPortByGatewayServiceUuid(final String logicalRouterUuid, final String l3GatewayServiceUuid)
 | 
					    public List<LogicalRouterPort> findLogicalRouterPortByGatewayServiceUuid(final String logicalRouterUuid, final String l3GatewayServiceUuid)
 | 
				
			||||||
            throws NiciraNvpApiException {
 | 
					                    throws NiciraNvpApiException {
 | 
				
			||||||
        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
 | 
					        final String uri = buildLogicalRouterElementUri(logicalRouterUuid, LPORT_PATH_SEGMENT);
 | 
				
			||||||
        final Map<String, String> params = new HashMap<String, String>();
 | 
					        final Map<String, String> params = buildBasicParametersMap(WILDCARD_QUERY_PARAMETER);
 | 
				
			||||||
        params.put("fields", "*");
 | 
					        params.put(ATTACHMENT_GWSVC_UUID_QUERY_PARAMETER, l3GatewayServiceUuid);
 | 
				
			||||||
        params.put("attachment_gwsvc_uuid", l3GatewayServiceUuid);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
 | 
					            final Type niciraListType = new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
 | 
				
			||||||
            }.getType(), uri, params);
 | 
					            }.getType();
 | 
				
			||||||
 | 
					            return restConnector.<NiciraNvpList<LogicalRouterPort>> executeRetrieveObject(niciraListType, uri, params).getResults();
 | 
				
			||||||
        } catch (final CloudstackRESTException e) {
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
            throw new NiciraNvpApiException(e);
 | 
					            throw new NiciraNvpApiException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static Map<String, String> buildBasicParametersMap(final String fieldsQueryValue) {
 | 
				
			||||||
 | 
					        final Map<String, String> params = new HashMap<String, String>();
 | 
				
			||||||
 | 
					        params.put(FIELDS_QUERY_PARAMETER, fieldsQueryValue);
 | 
				
			||||||
 | 
					        return params;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String buildUri(final String uriPrefix, final String uuid) {
 | 
				
			||||||
 | 
					        return uriPrefix + "/" + uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String buildLogicalSwitchUri(final String logicalSwitchUuid) {
 | 
				
			||||||
 | 
					        return buildUri(SWITCH_URI_PREFIX, logicalSwitchUuid);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String buildLogicalSwitchElementUri(final String logicalSwitchUuid, final String logicalElementType) {
 | 
				
			||||||
 | 
					        return buildLogicalSwitchUri(logicalSwitchUuid) + logicalElementType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String buildLogicalSwitchElementUri(final String logicalSwitchUuid, final String logicalElementType, final String elementUuid) {
 | 
				
			||||||
 | 
					        return buildLogicalSwitchElementUri(logicalSwitchUuid, logicalElementType) + "/" + elementUuid.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String buildLogicalRouterUri(final String logicalRouterUuid) {
 | 
				
			||||||
 | 
					        return buildUri(ROUTER_URI_PREFIX, logicalRouterUuid);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String buildLogicalRouterElementUri(final String logicalRouterUuid, final String logicalElementType) {
 | 
				
			||||||
 | 
					        return buildLogicalRouterUri(logicalRouterUuid) + logicalElementType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String buildLogicalRouterElementUri(final String logicalRouterUuid, final String logicalRouterElementType, final String elementUuid) {
 | 
				
			||||||
 | 
					        return buildLogicalRouterElementUri(logicalRouterUuid, logicalRouterElementType) + "/" + elementUuid.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static class Builder {
 | 
				
			||||||
 | 
					        private String host;
 | 
				
			||||||
 | 
					        private String username;
 | 
				
			||||||
 | 
					        private String password;
 | 
				
			||||||
 | 
					        private CloseableHttpClient httpClient;
 | 
				
			||||||
 | 
					        private HttpClientContext httpClientContext = HttpClientContext.create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Builder host(final String host) {
 | 
				
			||||||
 | 
					            this.host = host;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Builder username(final String username) {
 | 
				
			||||||
 | 
					            this.username = username;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Builder password(final String password) {
 | 
				
			||||||
 | 
					            this.password = password;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Builder httpClient(final CloseableHttpClient httpClient) {
 | 
				
			||||||
 | 
					            this.httpClient = httpClient;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Builder httpClientContext(final HttpClientContext httpClientContext) {
 | 
				
			||||||
 | 
					            this.httpClientContext = httpClientContext;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public NiciraNvpApi build() {
 | 
				
			||||||
 | 
					            return new NiciraNvpApi(this);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -19,6 +19,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.cloud.network.resource;
 | 
					package com.cloud.network.resource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.security.KeyManagementException;
 | 
				
			||||||
 | 
					import java.security.KeyStoreException;
 | 
				
			||||||
 | 
					import java.security.NoSuchAlgorithmException;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.naming.ConfigurationException;
 | 
					import javax.naming.ConfigurationException;
 | 
				
			||||||
@ -42,6 +45,8 @@ import com.cloud.network.nicira.NiciraNvpApiException;
 | 
				
			|||||||
import com.cloud.network.nicira.SourceNatRule;
 | 
					import com.cloud.network.nicira.SourceNatRule;
 | 
				
			||||||
import com.cloud.network.utils.CommandRetryUtility;
 | 
					import com.cloud.network.utils.CommandRetryUtility;
 | 
				
			||||||
import com.cloud.resource.ServerResource;
 | 
					import com.cloud.resource.ServerResource;
 | 
				
			||||||
 | 
					import com.cloud.utils.rest.CloudstackRESTException;
 | 
				
			||||||
 | 
					import com.cloud.utils.rest.HttpClientHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class NiciraNvpResource implements ServerResource {
 | 
					public class NiciraNvpResource implements ServerResource {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -49,6 +54,7 @@ public class NiciraNvpResource implements ServerResource {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public static final int NAME_MAX_LEN = 40;
 | 
					    public static final int NAME_MAX_LEN = 40;
 | 
				
			||||||
    public static final int NUM_RETRIES = 2;
 | 
					    public static final int NUM_RETRIES = 2;
 | 
				
			||||||
 | 
					    private static final int MAX_REDIRECTS = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private String name;
 | 
					    private String name;
 | 
				
			||||||
    private String guid;
 | 
					    private String guid;
 | 
				
			||||||
@ -58,8 +64,16 @@ public class NiciraNvpResource implements ServerResource {
 | 
				
			|||||||
    private NiciraNvpUtilities niciraNvpUtilities;
 | 
					    private NiciraNvpUtilities niciraNvpUtilities;
 | 
				
			||||||
    private CommandRetryUtility retryUtility;
 | 
					    private CommandRetryUtility retryUtility;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected NiciraNvpApi createNiciraNvpApi() {
 | 
					    protected NiciraNvpApi createNiciraNvpApi(final String host, final String username, final String password) throws CloudstackRESTException {
 | 
				
			||||||
        return new NiciraNvpApi();
 | 
					        try {
 | 
				
			||||||
 | 
					            return NiciraNvpApi.create().host(host).username(username).password(password).httpClient(HttpClientHelper.createHttpClient(MAX_REDIRECTS)).build();
 | 
				
			||||||
 | 
					        } catch (final KeyManagementException e) {
 | 
				
			||||||
 | 
					            throw new CloudstackRESTException("Could not create HTTP client", e);
 | 
				
			||||||
 | 
					        } catch (final NoSuchAlgorithmException e) {
 | 
				
			||||||
 | 
					            throw new CloudstackRESTException("Could not create HTTP client", e);
 | 
				
			||||||
 | 
					        } catch (final KeyStoreException e) {
 | 
				
			||||||
 | 
					            throw new CloudstackRESTException("Could not create HTTP client", e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@ -99,9 +113,11 @@ public class NiciraNvpResource implements ServerResource {
 | 
				
			|||||||
        retryUtility = CommandRetryUtility.getInstance();
 | 
					        retryUtility = CommandRetryUtility.getInstance();
 | 
				
			||||||
        retryUtility.setServerResource(this);
 | 
					        retryUtility.setServerResource(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        niciraNvpApi = createNiciraNvpApi();
 | 
					        try {
 | 
				
			||||||
        niciraNvpApi.setControllerAddress(ip);
 | 
					            niciraNvpApi = createNiciraNvpApi(ip, adminuser, adminpass);
 | 
				
			||||||
        niciraNvpApi.setAdminCredentials(adminuser, adminpass);
 | 
					        } catch (final CloudstackRESTException e) {
 | 
				
			||||||
 | 
					            throw new ConfigurationException("Could not create a Nicira Nvp API client: " + e.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,8 @@ package com.cloud.network.resource.wrapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
					import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.apache.log4j.Logger;
 | 
					import org.apache.log4j.Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.cloud.agent.api.Answer;
 | 
					import com.cloud.agent.api.Answer;
 | 
				
			||||||
@ -30,7 +32,6 @@ import com.cloud.agent.api.to.PortForwardingRuleTO;
 | 
				
			|||||||
import com.cloud.network.nicira.NatRule;
 | 
					import com.cloud.network.nicira.NatRule;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApi;
 | 
					import com.cloud.network.nicira.NiciraNvpApi;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApiException;
 | 
					import com.cloud.network.nicira.NiciraNvpApiException;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpList;
 | 
					 | 
				
			||||||
import com.cloud.network.resource.NiciraNvpResource;
 | 
					import com.cloud.network.resource.NiciraNvpResource;
 | 
				
			||||||
import com.cloud.network.utils.CommandRetryUtility;
 | 
					import com.cloud.network.utils.CommandRetryUtility;
 | 
				
			||||||
import com.cloud.resource.CommandWrapper;
 | 
					import com.cloud.resource.CommandWrapper;
 | 
				
			||||||
@ -45,7 +46,7 @@ public final class NiciraNvpConfigurePortForwardingRulesCommandWrapper extends C
 | 
				
			|||||||
    public Answer execute(final ConfigurePortForwardingRulesOnLogicalRouterCommand command, final NiciraNvpResource niciraNvpResource) {
 | 
					    public Answer execute(final ConfigurePortForwardingRulesOnLogicalRouterCommand command, final NiciraNvpResource niciraNvpResource) {
 | 
				
			||||||
        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
					        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            final NiciraNvpList<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
 | 
					            final List<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
 | 
				
			||||||
            // Rules of the game (also known as assumptions-that-will-make-stuff-break-later-on)
 | 
					            // Rules of the game (also known as assumptions-that-will-make-stuff-break-later-on)
 | 
				
			||||||
            // A SourceNat rule with a match other than a /32 cidr is assumed to be the "main" SourceNat rule
 | 
					            // A SourceNat rule with a match other than a /32 cidr is assumed to be the "main" SourceNat rule
 | 
				
			||||||
            // Any other SourceNat rule should have a corresponding DestinationNat rule
 | 
					            // Any other SourceNat rule should have a corresponding DestinationNat rule
 | 
				
			||||||
@ -66,7 +67,7 @@ public final class NiciraNvpConfigurePortForwardingRulesCommandWrapper extends C
 | 
				
			|||||||
                NatRule incoming = null;
 | 
					                NatRule incoming = null;
 | 
				
			||||||
                NatRule outgoing = null;
 | 
					                NatRule outgoing = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for (final NatRule storedRule : existingRules.getResults()) {
 | 
					                for (final NatRule storedRule : existingRules) {
 | 
				
			||||||
                    if (storedRule.equalsIgnoreUuid(rulepair[1])) {
 | 
					                    if (storedRule.equalsIgnoreUuid(rulepair[1])) {
 | 
				
			||||||
                        // The outgoing rule exists
 | 
					                        // The outgoing rule exists
 | 
				
			||||||
                        outgoing = storedRule;
 | 
					                        outgoing = storedRule;
 | 
				
			||||||
 | 
				
			|||||||
@ -21,13 +21,14 @@ package com.cloud.network.resource.wrapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
					import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.cloud.agent.api.Answer;
 | 
					import com.cloud.agent.api.Answer;
 | 
				
			||||||
import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterAnswer;
 | 
					import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterAnswer;
 | 
				
			||||||
import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterCommand;
 | 
					import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterCommand;
 | 
				
			||||||
import com.cloud.network.nicira.LogicalRouterPort;
 | 
					import com.cloud.network.nicira.LogicalRouterPort;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApi;
 | 
					import com.cloud.network.nicira.NiciraNvpApi;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApiException;
 | 
					import com.cloud.network.nicira.NiciraNvpApiException;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpList;
 | 
					 | 
				
			||||||
import com.cloud.network.resource.NiciraNvpResource;
 | 
					import com.cloud.network.resource.NiciraNvpResource;
 | 
				
			||||||
import com.cloud.network.utils.CommandRetryUtility;
 | 
					import com.cloud.network.utils.CommandRetryUtility;
 | 
				
			||||||
import com.cloud.resource.CommandWrapper;
 | 
					import com.cloud.resource.CommandWrapper;
 | 
				
			||||||
@ -41,11 +42,11 @@ public final class NiciraNvpConfigurePublicIpsCommandWrapper extends CommandWrap
 | 
				
			|||||||
        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
					        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            final NiciraNvpList<LogicalRouterPort> ports = niciraNvpApi.findLogicalRouterPortByGatewayServiceUuid(command.getLogicalRouterUuid(), command.getL3GatewayServiceUuid());
 | 
					            final List<LogicalRouterPort> ports = niciraNvpApi.findLogicalRouterPortByGatewayServiceUuid(command.getLogicalRouterUuid(), command.getL3GatewayServiceUuid());
 | 
				
			||||||
            if (ports.getResultCount() != 1) {
 | 
					            if (ports.size() != 1) {
 | 
				
			||||||
                return new ConfigurePublicIpsOnLogicalRouterAnswer(command, false, "No logical router ports found, unable to set ip addresses");
 | 
					                return new ConfigurePublicIpsOnLogicalRouterAnswer(command, false, "No logical router ports found, unable to set ip addresses");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            final LogicalRouterPort lrp = ports.getResults().get(0);
 | 
					            final LogicalRouterPort lrp = ports.get(0);
 | 
				
			||||||
            lrp.setIpAddresses(command.getPublicCidrs());
 | 
					            lrp.setIpAddresses(command.getPublicCidrs());
 | 
				
			||||||
            niciraNvpApi.updateLogicalRouterPort(command.getLogicalRouterUuid(), lrp);
 | 
					            niciraNvpApi.updateLogicalRouterPort(command.getLogicalRouterUuid(), lrp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,8 @@ package com.cloud.network.resource.wrapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
					import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.apache.log4j.Logger;
 | 
					import org.apache.log4j.Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.cloud.agent.api.Answer;
 | 
					import com.cloud.agent.api.Answer;
 | 
				
			||||||
@ -30,7 +32,6 @@ import com.cloud.agent.api.to.StaticNatRuleTO;
 | 
				
			|||||||
import com.cloud.network.nicira.NatRule;
 | 
					import com.cloud.network.nicira.NatRule;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApi;
 | 
					import com.cloud.network.nicira.NiciraNvpApi;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApiException;
 | 
					import com.cloud.network.nicira.NiciraNvpApiException;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpList;
 | 
					 | 
				
			||||||
import com.cloud.network.resource.NiciraNvpResource;
 | 
					import com.cloud.network.resource.NiciraNvpResource;
 | 
				
			||||||
import com.cloud.network.utils.CommandRetryUtility;
 | 
					import com.cloud.network.utils.CommandRetryUtility;
 | 
				
			||||||
import com.cloud.resource.CommandWrapper;
 | 
					import com.cloud.resource.CommandWrapper;
 | 
				
			||||||
@ -46,7 +47,7 @@ public final class NiciraNvpConfigureStaticNatRulesCommandWrapper extends Comman
 | 
				
			|||||||
        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
					        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            final NiciraNvpList<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
 | 
					            final List<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
 | 
				
			||||||
            // Rules of the game (also known as assumptions-that-will-make-stuff-break-later-on)
 | 
					            // Rules of the game (also known as assumptions-that-will-make-stuff-break-later-on)
 | 
				
			||||||
            // A SourceNat rule with a match other than a /32 cidr is assumed to be the "main" SourceNat rule
 | 
					            // A SourceNat rule with a match other than a /32 cidr is assumed to be the "main" SourceNat rule
 | 
				
			||||||
            // Any other SourceNat rule should have a corresponding DestinationNat rule
 | 
					            // Any other SourceNat rule should have a corresponding DestinationNat rule
 | 
				
			||||||
@ -58,7 +59,7 @@ public final class NiciraNvpConfigureStaticNatRulesCommandWrapper extends Comman
 | 
				
			|||||||
                NatRule incoming = null;
 | 
					                NatRule incoming = null;
 | 
				
			||||||
                NatRule outgoing = null;
 | 
					                NatRule outgoing = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for (final NatRule storedRule : existingRules.getResults()) {
 | 
					                for (final NatRule storedRule : existingRules) {
 | 
				
			||||||
                    if (storedRule.equalsIgnoreUuid(rulepair[1])) {
 | 
					                    if (storedRule.equalsIgnoreUuid(rulepair[1])) {
 | 
				
			||||||
                        // The outgoing rule exists
 | 
					                        // The outgoing rule exists
 | 
				
			||||||
                        outgoing = storedRule;
 | 
					                        outgoing = storedRule;
 | 
				
			||||||
 | 
				
			|||||||
@ -21,13 +21,14 @@ package com.cloud.network.resource.wrapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
					import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.cloud.agent.api.Answer;
 | 
					import com.cloud.agent.api.Answer;
 | 
				
			||||||
import com.cloud.agent.api.FindLogicalSwitchPortAnswer;
 | 
					import com.cloud.agent.api.FindLogicalSwitchPortAnswer;
 | 
				
			||||||
import com.cloud.agent.api.FindLogicalSwitchPortCommand;
 | 
					import com.cloud.agent.api.FindLogicalSwitchPortCommand;
 | 
				
			||||||
import com.cloud.network.nicira.LogicalSwitchPort;
 | 
					import com.cloud.network.nicira.LogicalSwitchPort;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApi;
 | 
					import com.cloud.network.nicira.NiciraNvpApi;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApiException;
 | 
					import com.cloud.network.nicira.NiciraNvpApiException;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpList;
 | 
					 | 
				
			||||||
import com.cloud.network.resource.NiciraNvpResource;
 | 
					import com.cloud.network.resource.NiciraNvpResource;
 | 
				
			||||||
import com.cloud.network.utils.CommandRetryUtility;
 | 
					import com.cloud.network.utils.CommandRetryUtility;
 | 
				
			||||||
import com.cloud.resource.CommandWrapper;
 | 
					import com.cloud.resource.CommandWrapper;
 | 
				
			||||||
@ -44,8 +45,8 @@ public final class NiciraNvpFindLogicalSwitchPortCommandWrapper extends CommandW
 | 
				
			|||||||
        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
					        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            final NiciraNvpList<LogicalSwitchPort> ports = niciraNvpApi.findLogicalSwitchPortsByUuid(logicalSwitchUuid, logicalSwitchPortUuid);
 | 
					            final List<LogicalSwitchPort> ports = niciraNvpApi.findLogicalSwitchPortsByUuid(logicalSwitchUuid, logicalSwitchPortUuid);
 | 
				
			||||||
            if (ports.getResultCount() == 0) {
 | 
					            if (ports.size() == 0) {
 | 
				
			||||||
                return new FindLogicalSwitchPortAnswer(command, false, "Logical switchport " + logicalSwitchPortUuid + " not found", null);
 | 
					                return new FindLogicalSwitchPortAnswer(command, false, "Logical switchport " + logicalSwitchPortUuid + " not found", null);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                return new FindLogicalSwitchPortAnswer(command, true, "Logical switchport " + logicalSwitchPortUuid + " found", logicalSwitchPortUuid);
 | 
					                return new FindLogicalSwitchPortAnswer(command, true, "Logical switchport " + logicalSwitchPortUuid + " found", logicalSwitchPortUuid);
 | 
				
			||||||
 | 
				
			|||||||
@ -22,16 +22,15 @@ package com.cloud.network.nicira;
 | 
				
			|||||||
import static org.junit.Assert.assertEquals;
 | 
					import static org.junit.Assert.assertEquals;
 | 
				
			||||||
import static org.junit.Assert.assertTrue;
 | 
					import static org.junit.Assert.assertTrue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Properties;
 | 
					 | 
				
			||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.junit.Before;
 | 
					import org.junit.Before;
 | 
				
			||||||
import org.junit.Test;
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.cloud.utils.PropertiesUtil;
 | 
					import com.cloud.utils.PropertiesUtil;
 | 
				
			||||||
 | 
					import com.cloud.utils.rest.HttpClientHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class NiciraNvpApiIT {
 | 
					public class NiciraNvpApiIT {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -40,18 +39,23 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
    protected long timestamp = System.currentTimeMillis();
 | 
					    protected long timestamp = System.currentTimeMillis();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Before
 | 
					    @Before
 | 
				
			||||||
    public void setup() throws IOException {
 | 
					    public void setup() throws Exception {
 | 
				
			||||||
        final Properties properties = PropertiesUtil.loadFromFile(PropertiesUtil.findConfigFile("config.properties"));
 | 
					        PropertiesUtil.loadFromFile(PropertiesUtil.findConfigFile("config.properties"));
 | 
				
			||||||
        api = new NiciraNvpApi();
 | 
					        final String host = System.getProperty("nvp.host");
 | 
				
			||||||
        api.setControllerAddress(properties.getProperty("nvp.host"));
 | 
					        final String user = System.getProperty("nvp.admin.user");
 | 
				
			||||||
        api.setAdminCredentials(properties.getProperty("nvp.admin.user"),
 | 
					        final String pass = System.getProperty("nvp.admin.pwd");
 | 
				
			||||||
                properties.getProperty("nvp.admin.pwd"));
 | 
					        api = NiciraNvpApi.create()
 | 
				
			||||||
 | 
					            .host(host)
 | 
				
			||||||
 | 
					            .username(user)
 | 
				
			||||||
 | 
					            .password(pass)
 | 
				
			||||||
 | 
					            .httpClient(HttpClientHelper.createHttpClient(5))
 | 
				
			||||||
 | 
					            .build();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testCRUDSecurityProfile() throws NiciraNvpApiException {
 | 
					    public void testCRUDSecurityProfile() {
 | 
				
			||||||
        SecurityProfile sProfile = new SecurityProfile();
 | 
					        SecurityProfile sProfile = new SecurityProfile();
 | 
				
			||||||
        sProfile.setDisplayName("SecProfile"+timestamp);
 | 
					        sProfile.setDisplayName("SecProfile" + timestamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final List<SecurityRule> egressRules = new ArrayList<SecurityRule>();
 | 
					        final List<SecurityRule> egressRules = new ArrayList<SecurityRule>();
 | 
				
			||||||
        sProfile.setLogicalPortEgressRules(egressRules);
 | 
					        sProfile.setLogicalPortEgressRules(egressRules);
 | 
				
			||||||
@ -73,27 +77,23 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
            sProfile = api.createSecurityProfile(sProfile);
 | 
					            sProfile = api.createSecurityProfile(sProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // We can now update the new entity
 | 
					            // We can now update the new entity
 | 
				
			||||||
            sProfile.setDisplayName("UpdatedSecProfile"+timestamp);
 | 
					            sProfile.setDisplayName("UpdatedSecProfile" + timestamp);
 | 
				
			||||||
            api.updateSecurityProfile(sProfile, sProfile.getUuid());
 | 
					            api.updateSecurityProfile(sProfile, sProfile.getUuid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Read them all
 | 
					            // Read them all
 | 
				
			||||||
            NiciraNvpList<SecurityProfile> profiles = api.findSecurityProfile();
 | 
					            List<SecurityProfile> profiles = api.findSecurityProfile();
 | 
				
			||||||
            SecurityProfile scInList = null;
 | 
					            SecurityProfile scInList = null;
 | 
				
			||||||
            for(final SecurityProfile iProfile : profiles.getResults()) {
 | 
					            for (final SecurityProfile iProfile : profiles) {
 | 
				
			||||||
                if (iProfile.getUuid().equalsIgnoreCase(sProfile.getUuid())) {
 | 
					                if (iProfile.getUuid().equalsIgnoreCase(sProfile.getUuid())) {
 | 
				
			||||||
                    scInList = iProfile;
 | 
					                    scInList = iProfile;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            assertEquals("Read a Security Profile different from the one just created and updated",
 | 
					            assertEquals("Read a Security Profile different from the one just created and updated", sProfile, scInList);
 | 
				
			||||||
                    sProfile, scInList);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Read them filtered by uuid (get one)
 | 
					            // Read them filtered by uuid (get one)
 | 
				
			||||||
            profiles = api.findSecurityProfile(sProfile.getUuid());
 | 
					            profiles = api.findSecurityProfile(sProfile.getUuid());
 | 
				
			||||||
            assertEquals("Read a Security Profile different from the one just created and updated",
 | 
					            assertEquals("Read a Security Profile different from the one just created and updated", sProfile, profiles.get(0));
 | 
				
			||||||
                    sProfile,
 | 
					            assertEquals("Read a Security Profile filtered by unique id (UUID) with more than one item", 1, profiles.size());
 | 
				
			||||||
                    profiles.getResults().get(0));
 | 
					 | 
				
			||||||
            assertEquals("Read a Security Profile filtered by unique id (UUID) with more than one item",
 | 
					 | 
				
			||||||
                    1, profiles.getResults().size());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // We can now delete the new entity
 | 
					            // We can now delete the new entity
 | 
				
			||||||
            api.deleteSecurityProfile(sProfile.getUuid());
 | 
					            api.deleteSecurityProfile(sProfile.getUuid());
 | 
				
			||||||
@ -104,25 +104,21 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testCRUDAcl() throws NiciraNvpApiException {
 | 
					    public void testCRUDAcl() {
 | 
				
			||||||
        Acl acl = new Acl();
 | 
					        Acl acl = new Acl();
 | 
				
			||||||
        acl.setDisplayName("Acl"+timestamp);
 | 
					        acl.setDisplayName("Acl" + timestamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Note that if the protocol is 6 (TCP) then you cannot put ICMP code and type
 | 
					        // Note that if the protocol is 6 (TCP) then you cannot put ICMP code and type
 | 
				
			||||||
        // Note that if the protocol is 1 (ICMP) then you cannot put ports
 | 
					        // Note that if the protocol is 1 (ICMP) then you cannot put ports
 | 
				
			||||||
        final List<AclRule> egressRules = new ArrayList<AclRule>();
 | 
					        final List<AclRule> egressRules = new ArrayList<AclRule>();
 | 
				
			||||||
        acl.setLogicalPortEgressRules(egressRules);
 | 
					        acl.setLogicalPortEgressRules(egressRules);
 | 
				
			||||||
        egressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 1, "allow", null, null,
 | 
					        egressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 1, "allow", null, null, "1.10.10.0", "1.10.10.1", null, null, null, null, 0, 0, 5));
 | 
				
			||||||
                "1.10.10.0", "1.10.10.1", null, null, null, null, 0, 0, 5));
 | 
					        egressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 6, "allow", null, null, "1.10.10.6", "1.10.10.7", 80, 80, 80, 80, 1, null, null));
 | 
				
			||||||
        egressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 6, "allow", null, null,
 | 
					 | 
				
			||||||
                "1.10.10.6", "1.10.10.7", 80, 80, 80, 80, 1, null, null));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final List<AclRule> ingressRules = new ArrayList<AclRule>();
 | 
					        final List<AclRule> ingressRules = new ArrayList<AclRule>();
 | 
				
			||||||
        acl.setLogicalPortIngressRules(ingressRules);
 | 
					        acl.setLogicalPortIngressRules(ingressRules);
 | 
				
			||||||
        ingressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 1, "allow", null, null,
 | 
					        ingressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 1, "allow", null, null, "1.10.10.0", "1.10.10.1", null, null, null, null, 0, 0, 5));
 | 
				
			||||||
                "1.10.10.0", "1.10.10.1", null, null, null, null, 0, 0, 5));
 | 
					        ingressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 6, "allow", null, null, "1.10.10.6", "1.10.10.7", 80, 80, 80, 80, 1, null, null));
 | 
				
			||||||
        ingressRules.add(new AclRule(AclRule.ETHERTYPE_IPV4, 6, "allow", null, null,
 | 
					 | 
				
			||||||
                "1.10.10.6", "1.10.10.7", 80, 80, 80, 80, 1, null, null));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
 | 
					        final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
 | 
				
			||||||
        acl.setTags(tags);
 | 
					        acl.setTags(tags);
 | 
				
			||||||
@ -134,27 +130,23 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
            acl = api.createAcl(acl);
 | 
					            acl = api.createAcl(acl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // We can now update the new entity
 | 
					            // We can now update the new entity
 | 
				
			||||||
            acl.setDisplayName("UpdatedAcl"+timestamp);
 | 
					            acl.setDisplayName("UpdatedAcl" + timestamp);
 | 
				
			||||||
            api.updateAcl(acl, acl.getUuid());
 | 
					            api.updateAcl(acl, acl.getUuid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Read them all
 | 
					            // Read them all
 | 
				
			||||||
            NiciraNvpList<Acl> acls = api.findAcl();
 | 
					            List<Acl> acls = api.findAcl();
 | 
				
			||||||
            Acl scInList = null;
 | 
					            Acl scInList = null;
 | 
				
			||||||
            for(final Acl iAcl : acls.getResults()) {
 | 
					            for (final Acl iAcl : acls) {
 | 
				
			||||||
                if (iAcl.getUuid().equalsIgnoreCase(acl.getUuid())) {
 | 
					                if (iAcl.getUuid().equalsIgnoreCase(acl.getUuid())) {
 | 
				
			||||||
                    scInList = iAcl;
 | 
					                    scInList = iAcl;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            assertEquals("Read a ACL different from the one just created and updated",
 | 
					            assertEquals("Read a ACL different from the one just created and updated", acl, scInList);
 | 
				
			||||||
                    acl, scInList);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Read them filtered by uuid (get one)
 | 
					            // Read them filtered by uuid (get one)
 | 
				
			||||||
            acls = api.findAcl(acl.getUuid());
 | 
					            acls = api.findAcl(acl.getUuid());
 | 
				
			||||||
            assertEquals("Read a ACL different from the one just created and updated",
 | 
					            assertEquals("Read a ACL different from the one just created and updated", acl, acls.get(0));
 | 
				
			||||||
                    acl,
 | 
					            assertEquals("Read a ACL filtered by unique id (UUID) with more than one item", 1, acls.size());
 | 
				
			||||||
                    acls.getResults().get(0));
 | 
					 | 
				
			||||||
            assertEquals("Read a ACL filtered by unique id (UUID) with more than one item",
 | 
					 | 
				
			||||||
                    1, acls.getResults().size());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // We can now delete the new entity
 | 
					            // We can now delete the new entity
 | 
				
			||||||
            api.deleteAcl(acl.getUuid());
 | 
					            api.deleteAcl(acl.getUuid());
 | 
				
			||||||
@ -165,9 +157,9 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testCRUDLogicalSwitch() throws NiciraNvpApiException {
 | 
					    public void testCRUDLogicalSwitch() throws Exception {
 | 
				
			||||||
        LogicalSwitch logicalSwitch = new LogicalSwitch();
 | 
					        LogicalSwitch logicalSwitch = new LogicalSwitch();
 | 
				
			||||||
        logicalSwitch.setDisplayName("LogicalSwitch"+timestamp);
 | 
					        logicalSwitch.setDisplayName("LogicalSwitch" + timestamp);
 | 
				
			||||||
        logicalSwitch.setPortIsolationEnabled(true);
 | 
					        logicalSwitch.setPortIsolationEnabled(true);
 | 
				
			||||||
        logicalSwitch.setReplicationMode("service");
 | 
					        logicalSwitch.setReplicationMode("service");
 | 
				
			||||||
        logicalSwitch.setTags(new ArrayList<NiciraNvpTag>());
 | 
					        logicalSwitch.setTags(new ArrayList<NiciraNvpTag>());
 | 
				
			||||||
@ -175,78 +167,65 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // In the creation we don't get to specify UUID, href or schema: they don't exist yet
 | 
					        // In the creation we don't get to specify UUID, href or schema: they don't exist yet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        logicalSwitch = api.createLogicalSwitch(logicalSwitch);
 | 
				
			||||||
            logicalSwitch = api.createLogicalSwitch(logicalSwitch);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // We can now update the new entity
 | 
					        // We can now update the new entity
 | 
				
			||||||
            logicalSwitch.setDisplayName("UpdatedLogicalSwitch"+timestamp);
 | 
					        logicalSwitch.setDisplayName("UpdatedLogicalSwitch" + timestamp);
 | 
				
			||||||
            api.updateLogicalSwitch(logicalSwitch, logicalSwitch.getUuid());
 | 
					        api.updateLogicalSwitch(logicalSwitch, logicalSwitch.getUuid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Read them all
 | 
					        // Read them all
 | 
				
			||||||
            NiciraNvpList<LogicalSwitch> logicalSwitches = api.findLogicalSwitch();
 | 
					        List<LogicalSwitch> logicalSwitches = api.findLogicalSwitch();
 | 
				
			||||||
            for(final LogicalSwitch iLogicalSwitch : logicalSwitches.getResults()) {
 | 
					        for (final LogicalSwitch iLogicalSwitch : logicalSwitches) {
 | 
				
			||||||
                if (iLogicalSwitch.getUuid().equalsIgnoreCase(logicalSwitch.getUuid())) {
 | 
					            if (iLogicalSwitch.getUuid().equalsIgnoreCase(logicalSwitch.getUuid())) {
 | 
				
			||||||
                    assertEquals("Read a LogicalSwitch different from the one just created and updated",
 | 
					                assertEquals("Read a LogicalSwitch different from the one just created and updated", logicalSwitch, iLogicalSwitch);
 | 
				
			||||||
                            logicalSwitch, iLogicalSwitch);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Read them filtered by uuid (get one)
 | 
					 | 
				
			||||||
            logicalSwitches = api.findLogicalSwitch(logicalSwitch.getUuid());
 | 
					 | 
				
			||||||
            assertEquals("Read a LogicalSwitch different from the one just created and updated",
 | 
					 | 
				
			||||||
                    logicalSwitch,
 | 
					 | 
				
			||||||
                    logicalSwitches.getResults().get(0));
 | 
					 | 
				
			||||||
            assertEquals("Read a LogicalSwitch filtered by unique id (UUID) with more than one item",
 | 
					 | 
				
			||||||
                    1, logicalSwitches.getResults().size());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Before deleting the test LogicalSwitch, test its ports
 | 
					 | 
				
			||||||
            final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
 | 
					 | 
				
			||||||
            tags.add(new NiciraNvpTag("cs_account", "OwnerName"));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            LogicalSwitchPort logicalSwitchPort = new LogicalSwitchPort("LSwitchPort"+timestamp, tags, true);
 | 
					 | 
				
			||||||
            logicalSwitchPort = api.createLogicalSwitchPort(logicalSwitch.getUuid(), logicalSwitchPort);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            logicalSwitchPort.setDisplayName("UpdatedLSwitchPort"+timestamp);
 | 
					 | 
				
			||||||
            api.updateLogicalSwitchPort(logicalSwitch.getUuid(), logicalSwitchPort);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            final NiciraNvpList<LogicalSwitchPort> logicalSwitchePorts =
 | 
					 | 
				
			||||||
                    api.findLogicalSwitchPortsByUuid(logicalSwitch.getUuid(), logicalSwitchPort.getUuid());
 | 
					 | 
				
			||||||
            for(final LogicalSwitchPort iLSwitchPort : logicalSwitchePorts.getResults()) {
 | 
					 | 
				
			||||||
                if (iLSwitchPort.getUuid().equalsIgnoreCase(logicalSwitchPort.getUuid())) {
 | 
					 | 
				
			||||||
                    assertEquals("Read a LogicalSwitchPort different from the one just created and updated",
 | 
					 | 
				
			||||||
                            logicalSwitchPort, iLSwitchPort);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // And finally test attachments
 | 
					 | 
				
			||||||
            final String attachmentUuid = UUID.randomUUID().toString();
 | 
					 | 
				
			||||||
            final VifAttachment vifAttachment = new VifAttachment(attachmentUuid);
 | 
					 | 
				
			||||||
            api.updateLogicalSwitchPortAttachment(logicalSwitch.getUuid(), logicalSwitchPort.getUuid(),
 | 
					 | 
				
			||||||
                    vifAttachment);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            assertEquals("Read a LogicalSwitchPort by vifAttachment different than expected",
 | 
					 | 
				
			||||||
                    api.findLogicalSwitchPortUuidByVifAttachmentUuid(logicalSwitch.getUuid(), vifAttachment.getVifUuid()),
 | 
					 | 
				
			||||||
                            logicalSwitchPort.getUuid());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            api.deleteLogicalSwitchPort(logicalSwitch.getUuid(), logicalSwitchPort.getUuid());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // We can now delete the new entity
 | 
					 | 
				
			||||||
            api.deleteLogicalSwitch(logicalSwitch.getUuid());
 | 
					 | 
				
			||||||
        } catch (final NiciraNvpApiException e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
            assertTrue("Errors in LogicalSwitch CRUD", false);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Read them filtered by uuid (get one)
 | 
				
			||||||
 | 
					        logicalSwitches = api.findLogicalSwitch(logicalSwitch.getUuid());
 | 
				
			||||||
 | 
					        assertEquals("Read a LogicalSwitch different from the one just created and updated", logicalSwitch, logicalSwitches.get(0));
 | 
				
			||||||
 | 
					        assertEquals("Read a LogicalSwitch filtered by unique id (UUID) with more than one item", 1, logicalSwitches.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Before deleting the test LogicalSwitch, test its ports
 | 
				
			||||||
 | 
					        final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
 | 
				
			||||||
 | 
					        tags.add(new NiciraNvpTag("cs_account", "OwnerName"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LogicalSwitchPort logicalSwitchPort = new LogicalSwitchPort("LSwitchPort" + timestamp, tags, true);
 | 
				
			||||||
 | 
					        logicalSwitchPort = api.createLogicalSwitchPort(logicalSwitch.getUuid(), logicalSwitchPort);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        logicalSwitchPort.setDisplayName("UpdatedLSwitchPort" + timestamp);
 | 
				
			||||||
 | 
					        api.updateLogicalSwitchPort(logicalSwitch.getUuid(), logicalSwitchPort);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final List<LogicalSwitchPort> logicalSwitchePorts = api.findLogicalSwitchPortsByUuid(logicalSwitch.getUuid(), logicalSwitchPort.getUuid());
 | 
				
			||||||
 | 
					        for (final LogicalSwitchPort iLSwitchPort : logicalSwitchePorts) {
 | 
				
			||||||
 | 
					            if (iLSwitchPort.getUuid().equalsIgnoreCase(logicalSwitchPort.getUuid())) {
 | 
				
			||||||
 | 
					                assertEquals("Read a LogicalSwitchPort different from the one just created and updated", logicalSwitchPort, iLSwitchPort);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // And finally test attachments
 | 
				
			||||||
 | 
					        final String attachmentUuid = UUID.randomUUID().toString();
 | 
				
			||||||
 | 
					        final VifAttachment vifAttachment = new VifAttachment(attachmentUuid);
 | 
				
			||||||
 | 
					        api.updateLogicalSwitchPortAttachment(logicalSwitch.getUuid(), logicalSwitchPort.getUuid(), vifAttachment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertEquals("Read a LogicalSwitchPort by vifAttachment different than expected",
 | 
				
			||||||
 | 
					                        api.findLogicalSwitchPortUuidByVifAttachmentUuid(logicalSwitch.getUuid(), vifAttachment.getVifUuid()), logicalSwitchPort.getUuid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        api.deleteLogicalSwitchPort(logicalSwitch.getUuid(), logicalSwitchPort.getUuid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // We can now delete the new entity
 | 
				
			||||||
 | 
					        api.deleteLogicalSwitch(logicalSwitch.getUuid());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testCRUDLogicalRouter() throws NiciraNvpApiException {
 | 
					    public void testCRUDLogicalRouter() {
 | 
				
			||||||
        LogicalRouter logicalRouter = new LogicalRouter();
 | 
					        LogicalRouter logicalRouter = new LogicalRouter();
 | 
				
			||||||
        logicalRouter.setDisplayName("LogicalRouter"+timestamp);
 | 
					        logicalRouter.setDisplayName("LogicalRouter" + timestamp);
 | 
				
			||||||
        logicalRouter.setDistributed(true);
 | 
					        logicalRouter.setDistributed(true);
 | 
				
			||||||
        logicalRouter.setNatSynchronizationEnabled(true);
 | 
					        logicalRouter.setNatSynchronizationEnabled(true);
 | 
				
			||||||
        logicalRouter.setReplicationMode(LogicalRouter.REPLICATION_MODE_SERVICE);
 | 
					        logicalRouter.setReplicationMode(LogicalRouter.REPLICATION_MODE_SERVICE);
 | 
				
			||||||
        final RoutingConfig routingConfig = new SingleDefaultRouteImplicitRoutingConfig(
 | 
					        final RoutingConfig routingConfig = new SingleDefaultRouteImplicitRoutingConfig(
 | 
				
			||||||
                new RouterNextHop("192.168.10.20"));
 | 
					                        new RouterNextHop("192.168.10.20"));
 | 
				
			||||||
        logicalRouter.setRoutingConfig(routingConfig);
 | 
					        logicalRouter.setRoutingConfig(routingConfig);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // In the creation we don't get to specify UUID, href or schema: they don't exist yet
 | 
					        // In the creation we don't get to specify UUID, href or schema: they don't exist yet
 | 
				
			||||||
@ -255,37 +234,32 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
            logicalRouter = api.createLogicalRouter(logicalRouter);
 | 
					            logicalRouter = api.createLogicalRouter(logicalRouter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // We can now update the new entity
 | 
					            // We can now update the new entity
 | 
				
			||||||
            logicalRouter.setDisplayName("UpdatedLogicalSwitch"+timestamp);
 | 
					            logicalRouter.setDisplayName("UpdatedLogicalSwitch" + timestamp);
 | 
				
			||||||
            api.updateLogicalRouter(logicalRouter, logicalRouter.getUuid());
 | 
					            api.updateLogicalRouter(logicalRouter, logicalRouter.getUuid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Read them all
 | 
					            // Read them all
 | 
				
			||||||
            NiciraNvpList<LogicalRouter> logicalRouters = api.findLogicalRouter();
 | 
					            List<LogicalRouter> logicalRouters = api.findLogicalRouter();
 | 
				
			||||||
            LogicalRouter lsInList = null;
 | 
					            LogicalRouter lsInList = null;
 | 
				
			||||||
            for(final LogicalRouter iLogicalRouter : logicalRouters.getResults()) {
 | 
					            for (final LogicalRouter iLogicalRouter : logicalRouters) {
 | 
				
			||||||
                if (iLogicalRouter.getUuid().equalsIgnoreCase(logicalRouter.getUuid())) {
 | 
					                if (iLogicalRouter.getUuid().equalsIgnoreCase(logicalRouter.getUuid())) {
 | 
				
			||||||
                    lsInList = iLogicalRouter;
 | 
					                    lsInList = iLogicalRouter;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            assertEquals("Read a LogicalRouter different from the one just created and updated",
 | 
					            assertEquals("Read a LogicalRouter different from the one just created and updated", logicalRouter, lsInList);
 | 
				
			||||||
                    logicalRouter, lsInList);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Read them filtered by uuid (get one)
 | 
					            // Read them filtered by uuid (get one)
 | 
				
			||||||
            logicalRouters = api.findLogicalRouter(logicalRouter.getUuid());
 | 
					            logicalRouters = api.findLogicalRouter(logicalRouter.getUuid());
 | 
				
			||||||
            assertEquals("Read a LogicalRouter different from the one just created and updated",
 | 
					            assertEquals("Read a LogicalRouter different from the one just created and updated", logicalRouter, logicalRouters.get(0));
 | 
				
			||||||
                    logicalRouter,
 | 
					            assertEquals("Read a LogicalRouter filtered by unique id (UUID) with more than one item", 1, logicalRouters.size());
 | 
				
			||||||
                    logicalRouters.getResults().get(0));
 | 
					 | 
				
			||||||
            assertEquals("Read a LogicalRouter filtered by unique id (UUID) with more than one item",
 | 
					 | 
				
			||||||
                    1, logicalRouters.getResults().size());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            assertEquals("", logicalRouters.getResults().get(0),
 | 
					            assertEquals(logicalRouters.get(0), api.findOneLogicalRouterByUuid(logicalRouter.getUuid()));
 | 
				
			||||||
                    api.findOneLogicalRouterByUuid(logicalRouter.getUuid()));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Before deleting the test LogicalRouter, test its ports
 | 
					            // Before deleting the test LogicalRouter, test its ports
 | 
				
			||||||
            final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
 | 
					            final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
 | 
				
			||||||
            tags.add(new NiciraNvpTag("cs_account", "OwnerName"));
 | 
					            tags.add(new NiciraNvpTag("cs_account", "OwnerName"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LogicalRouterPort logicalRouterPort = new LogicalRouterPort();
 | 
					            LogicalRouterPort logicalRouterPort = new LogicalRouterPort();
 | 
				
			||||||
            logicalRouterPort.setDisplayName("LRouterPort"+timestamp);
 | 
					            logicalRouterPort.setDisplayName("LRouterPort" + timestamp);
 | 
				
			||||||
            logicalRouterPort.setTags(tags);
 | 
					            logicalRouterPort.setTags(tags);
 | 
				
			||||||
            logicalRouterPort.setAdminStatusEnabled(true);
 | 
					            logicalRouterPort.setAdminStatusEnabled(true);
 | 
				
			||||||
            logicalRouterPort.setPortno(1024);
 | 
					            logicalRouterPort.setPortno(1024);
 | 
				
			||||||
@ -296,15 +270,13 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
            logicalRouterPort.setIpAddresses(ipAddresses);
 | 
					            logicalRouterPort.setIpAddresses(ipAddresses);
 | 
				
			||||||
            logicalRouterPort = api.createLogicalRouterPort(logicalRouter.getUuid(), logicalRouterPort);
 | 
					            logicalRouterPort = api.createLogicalRouterPort(logicalRouter.getUuid(), logicalRouterPort);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            logicalRouterPort.setDisplayName("UpdatedLRouterPort"+timestamp);
 | 
					            logicalRouterPort.setDisplayName("UpdatedLRouterPort" + timestamp);
 | 
				
			||||||
            api.updateLogicalRouterPort(logicalRouter.getUuid(), logicalRouterPort);
 | 
					            api.updateLogicalRouterPort(logicalRouter.getUuid(), logicalRouterPort);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            final NiciraNvpList<LogicalRouterPort> logicalRouterePorts =
 | 
					            final List<LogicalRouterPort> logicalRouterePorts = api.findLogicalRouterPortsByUuid(logicalRouter.getUuid(), logicalRouterPort.getUuid());
 | 
				
			||||||
                    api.findLogicalRouterPortsByUuid(logicalRouter.getUuid(), logicalRouterPort.getUuid());
 | 
					            for (final LogicalRouterPort iLRouterPort : logicalRouterePorts) {
 | 
				
			||||||
            for(final LogicalRouterPort iLRouterPort : logicalRouterePorts.getResults()) {
 | 
					 | 
				
			||||||
                if (iLRouterPort.getUuid().equalsIgnoreCase(logicalRouterPort.getUuid())) {
 | 
					                if (iLRouterPort.getUuid().equalsIgnoreCase(logicalRouterPort.getUuid())) {
 | 
				
			||||||
                    assertEquals("Read a LogicalRouterPort different from the one just created and updated",
 | 
					                    assertEquals("Read a LogicalRouterPort different from the one just created and updated", logicalRouterPort, iLRouterPort);
 | 
				
			||||||
                            logicalRouterPort, iLRouterPort);
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -339,8 +311,8 @@ public class NiciraNvpApiIT {
 | 
				
			|||||||
    public void testGetControlClusterStatus() throws NiciraNvpApiException {
 | 
					    public void testGetControlClusterStatus() throws NiciraNvpApiException {
 | 
				
			||||||
        final ControlClusterStatus controlClusterStatus = api.getControlClusterStatus();
 | 
					        final ControlClusterStatus controlClusterStatus = api.getControlClusterStatus();
 | 
				
			||||||
        final String clusterStatus = controlClusterStatus.getClusterStatus();
 | 
					        final String clusterStatus = controlClusterStatus.getClusterStatus();
 | 
				
			||||||
        final boolean correctStatus = (clusterStatus.equalsIgnoreCase("stable") ||
 | 
					        final boolean correctStatus = clusterStatus.equalsIgnoreCase("stable") ||
 | 
				
			||||||
                clusterStatus.equalsIgnoreCase("joining") || clusterStatus.equalsIgnoreCase("unstable"));
 | 
					                        clusterStatus.equalsIgnoreCase("joining") || clusterStatus.equalsIgnoreCase("unstable");
 | 
				
			||||||
        assertTrue("Not recognizable cluster status", correctStatus);
 | 
					        assertTrue("Not recognizable cluster status", correctStatus);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -19,321 +19,180 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.cloud.network.nicira;
 | 
					package com.cloud.network.nicira;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.junit.Assert.assertEquals;
 | 
					import static org.hamcrest.MatcherAssert.assertThat;
 | 
				
			||||||
import static org.junit.Assert.assertTrue;
 | 
					import static org.hamcrest.Matchers.equalTo;
 | 
				
			||||||
 | 
					import static org.hamcrest.Matchers.hasProperty;
 | 
				
			||||||
 | 
					import static org.hamcrest.Matchers.hasSize;
 | 
				
			||||||
 | 
					import static org.mockito.Matchers.any;
 | 
				
			||||||
 | 
					import static org.mockito.Mockito.doReturn;
 | 
				
			||||||
import static org.mockito.Mockito.mock;
 | 
					import static org.mockito.Mockito.mock;
 | 
				
			||||||
 | 
					import static org.mockito.Mockito.spy;
 | 
				
			||||||
import static org.mockito.Mockito.times;
 | 
					import static org.mockito.Mockito.times;
 | 
				
			||||||
import static org.mockito.Mockito.verify;
 | 
					import static org.mockito.Mockito.verify;
 | 
				
			||||||
import static org.mockito.Mockito.when;
 | 
					import static org.mockito.Mockito.when;
 | 
				
			||||||
import static org.mockito.Mockito.doAnswer;
 | 
					 | 
				
			||||||
import static org.mockito.Matchers.any;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.Arrays;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.apache.commons.httpclient.HttpClient;
 | 
					 | 
				
			||||||
import org.apache.commons.httpclient.HttpMethod;
 | 
					 | 
				
			||||||
import org.apache.commons.httpclient.HttpStatus;
 | 
					import org.apache.commons.httpclient.HttpStatus;
 | 
				
			||||||
import org.apache.commons.httpclient.NameValuePair;
 | 
					import org.apache.http.HttpHost;
 | 
				
			||||||
import org.apache.commons.httpclient.methods.DeleteMethod;
 | 
					import org.apache.http.HttpRequest;
 | 
				
			||||||
import org.apache.commons.httpclient.methods.GetMethod;
 | 
					import org.apache.http.ProtocolVersion;
 | 
				
			||||||
import org.apache.commons.httpclient.methods.PostMethod;
 | 
					import org.apache.http.StatusLine;
 | 
				
			||||||
import org.apache.commons.httpclient.methods.PutMethod;
 | 
					import org.apache.http.client.methods.CloseableHttpResponse;
 | 
				
			||||||
import org.apache.commons.httpclient.params.HttpClientParams;
 | 
					import org.apache.http.client.protocol.HttpClientContext;
 | 
				
			||||||
import org.junit.Before;
 | 
					import org.apache.http.entity.StringEntity;
 | 
				
			||||||
 | 
					import org.apache.http.impl.client.CloseableHttpClient;
 | 
				
			||||||
 | 
					import org.apache.http.message.BasicStatusLine;
 | 
				
			||||||
 | 
					import org.hamcrest.Matchers;
 | 
				
			||||||
import org.junit.Test;
 | 
					import org.junit.Test;
 | 
				
			||||||
import org.mockito.invocation.InvocationOnMock;
 | 
					 | 
				
			||||||
import org.mockito.stubbing.Answer;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.gson.Gson;
 | 
					import com.cloud.utils.rest.HttpClientHelper;
 | 
				
			||||||
import com.google.gson.JsonParseException;
 | 
					import com.cloud.utils.rest.HttpUriRequestMethodMatcher;
 | 
				
			||||||
import com.cloud.utils.rest.RESTServiceConnector;
 | 
					import com.cloud.utils.rest.HttpUriRequestPathMatcher;
 | 
				
			||||||
import com.cloud.utils.rest.RESTValidationStrategy;
 | 
					import com.cloud.utils.rest.HttpUriRequestQueryMatcher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class NiciraNvpApiTest {
 | 
					public class NiciraNvpApiTest {
 | 
				
			||||||
 | 
					    private static final StatusLine HTTP_200_REPSONSE = new BasicStatusLine(new ProtocolVersion("HTTPS", 1, 1), HttpStatus.SC_OK, "OK");
 | 
				
			||||||
 | 
					    private static final StatusLine HTTP_201_REPSONSE = new BasicStatusLine(new ProtocolVersion("HTTPS", 1, 1), HttpStatus.SC_CREATED, "Created");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected static final String UUID = "aaaa";
 | 
					    protected static final String UUID = "aaaa";
 | 
				
			||||||
    protected static final String UUID2 = "bbbb";
 | 
					    protected static final String UUID2 = "bbbb";
 | 
				
			||||||
    protected static final String UUID_SEC_PROFILE_URI = NiciraNvpApi.SEC_PROFILE_URI_PREFIX + "/aaaa";
 | 
					    protected static final String UUID_SEC_PROFILE_URI = NiciraConstants.SEC_PROFILE_URI_PREFIX + "/aaaa";
 | 
				
			||||||
    protected static final String SCHEMA = "myTestSchema";
 | 
					    protected static final String SCHEMA = "myTestSchema";
 | 
				
			||||||
    protected static final String SCHEMA2 = "myTestSchema2";
 | 
					    protected static final String SCHEMA2 = "myTestSchema2";
 | 
				
			||||||
    protected static final String HREF = "myTestHref";
 | 
					    protected static final String HREF = "myTestHref";
 | 
				
			||||||
    protected static final String HREF2 = "myTestHref2";
 | 
					    protected static final String HREF2 = "myTestHref2";
 | 
				
			||||||
    protected static final String SEC_PROFILE_JSON_RESPONSE =
 | 
					    protected static final String SEC_PROFILE_JSON_RESPONSE =
 | 
				
			||||||
            "{\"uuid\" : \"aaaa\","
 | 
					                    "{\"uuid\" : \"aaaa\","
 | 
				
			||||||
            + "\"display_name\" : \"myTestName\","
 | 
					                                    + "\"display_name\" : \"myTestName\","
 | 
				
			||||||
            + "\"href\" : \"myTestHref\","
 | 
					                                    + "\"href\" : \"myTestHref\","
 | 
				
			||||||
            + "\"schema\" : \"myTestSchema\"}";
 | 
					                                    + "\"schema\" : \"myTestSchema\"}";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected static final String SEC_PROFILE_LIST_JSON_RESPONSE = "{\"results\" : [{\"uuid\" : \"aaaa\","
 | 
					    protected static final String SEC_PROFILE_LIST_JSON_RESPONSE = "{\"results\" : [{\"uuid\" : \"aaaa\","
 | 
				
			||||||
            + "\"display_name\" : \"myTestName\","
 | 
					                    + "\"display_name\" : \"myTestName\","
 | 
				
			||||||
            + "\"href\" : \"myTestHref\","
 | 
					                    + "\"href\" : \"myTestHref\","
 | 
				
			||||||
            + "\"schema\" : \"myTestSchema\"},"
 | 
					                    + "\"schema\" : \"myTestSchema\"},"
 | 
				
			||||||
            + "{ \"uuid\" : \"bbbb\","
 | 
					                    + "{ \"uuid\" : \"bbbb\","
 | 
				
			||||||
            + "\"display_name\" : \"myTestName2\","
 | 
					                    + "\"display_name\" : \"myTestName2\","
 | 
				
			||||||
            + "\"href\" : \"myTestHref2\","
 | 
					                    + "\"href\" : \"myTestHref2\","
 | 
				
			||||||
            + "\"schema\" : \"myTestSchema2\"}],"
 | 
					                    + "\"schema\" : \"myTestSchema2\"}],"
 | 
				
			||||||
            + "\"result_count\": 2}";
 | 
					                    + "\"result_count\": 2}";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NiciraNvpApi api;
 | 
					    private static NiciraNvpApi buildApi(final CloseableHttpClient httpClient) {
 | 
				
			||||||
    HttpClient client = mock(HttpClient.class);
 | 
					        return NiciraNvpApi.create()
 | 
				
			||||||
    HttpMethod method;
 | 
					            .host("localhost")
 | 
				
			||||||
    String type;
 | 
					            .username("admin")
 | 
				
			||||||
    String uri;
 | 
					            .password("adminpassword")
 | 
				
			||||||
 | 
					            .httpClient(httpClient)
 | 
				
			||||||
    @Before
 | 
					            .build();
 | 
				
			||||||
    public void setUp() {
 | 
					 | 
				
			||||||
        final HttpClientParams hmp = mock(HttpClientParams.class);
 | 
					 | 
				
			||||||
        when(client.getParams()).thenReturn(hmp);
 | 
					 | 
				
			||||||
        api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        api.restConnector = new RESTServiceConnector(new RESTValidationStrategy()) {
 | 
					 | 
				
			||||||
            @Override
 | 
					 | 
				
			||||||
            public HttpClient createHttpClient() {
 | 
					 | 
				
			||||||
                return client;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            @Override
 | 
					 | 
				
			||||||
            public HttpMethod createMethod(final String newType, final String newUri) {
 | 
					 | 
				
			||||||
                type = newType;
 | 
					 | 
				
			||||||
                uri = newUri;
 | 
					 | 
				
			||||||
                return method;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        api.setAdminCredentials("admin", "adminpass");
 | 
					 | 
				
			||||||
        api.setControllerAddress("localhost");
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testFindSecurityProfile() throws NiciraNvpApiException, IOException {
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
        // Prepare
 | 
					    public void testFindSecurityProfile() throws Exception {
 | 
				
			||||||
        method = mock(GetMethod.class);
 | 
					        final CloseableHttpResponse response = mock(CloseableHttpResponse.class);
 | 
				
			||||||
        when(method.getStatusCode()).thenReturn(HttpStatus.SC_OK);
 | 
					        when(response.getStatusLine()).thenReturn(HTTP_200_REPSONSE);
 | 
				
			||||||
        when(method.getResponseBodyAsString()).thenReturn(SEC_PROFILE_LIST_JSON_RESPONSE);
 | 
					        when(response.getEntity()).thenReturn(new StringEntity(SEC_PROFILE_LIST_JSON_RESPONSE));
 | 
				
			||||||
        final NameValuePair[] queryString = new NameValuePair[]{
 | 
					        final CloseableHttpClient httpClient = spy(HttpClientHelper.createHttpClient(2));
 | 
				
			||||||
                new NameValuePair("fields","*")};
 | 
					        doReturn(response).when(httpClient).execute(any(HttpHost.class), any(HttpRequest.class), any(HttpClientContext.class));
 | 
				
			||||||
 | 
					        final NiciraNvpApi api = buildApi(httpClient);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Execute
 | 
					        final List<SecurityProfile> actualProfiles = api.findSecurityProfile();
 | 
				
			||||||
        final NiciraNvpList<SecurityProfile> actualProfiles = api.findSecurityProfile();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Assert
 | 
					        assertThat("Wrong number of results", actualProfiles, hasSize(2));
 | 
				
			||||||
        verify(method, times(1)).releaseConnection();
 | 
					        assertThat("Wrong Uuid in the newly created SecurityProfile", actualProfiles, Matchers.<SecurityProfile> contains(
 | 
				
			||||||
        verify(method, times(1)).setQueryString(queryString);
 | 
					                        hasProperty("uuid", equalTo(UUID)),
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					                        hasProperty("uuid", equalTo(UUID2))));
 | 
				
			||||||
                UUID, actualProfiles.getResults().get(0).getUuid());
 | 
					        assertThat("Wrong HREF in the newly created SecurityProfile", actualProfiles, Matchers.<SecurityProfile> contains(
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					                        hasProperty("href", equalTo(HREF)),
 | 
				
			||||||
                HREF, actualProfiles.getResults().get(0).getHref());
 | 
					                        hasProperty("href", equalTo(HREF2))));
 | 
				
			||||||
        assertEquals("Wrong Schema in the newly created SecurityProfile",
 | 
					        assertThat("Wrong Schema in the newly created SecurityProfile", actualProfiles, Matchers.<SecurityProfile> contains(
 | 
				
			||||||
                SCHEMA, actualProfiles.getResults().get(0).getSchema());
 | 
					                        hasProperty("schema", equalTo(SCHEMA)),
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					                        hasProperty("schema", equalTo(SCHEMA2))));
 | 
				
			||||||
                UUID2, actualProfiles.getResults().get(1).getUuid());
 | 
					        verify(response, times(1)).close();
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestMethodMatcher.aMethod("GET"), any(HttpClientContext.class));
 | 
				
			||||||
                HREF2, actualProfiles.getResults().get(1).getHref());
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestQueryMatcher.aQuery("fields=*"), any(HttpClientContext.class));
 | 
				
			||||||
        assertEquals("Wrong Schema in the newly created SecurityProfile",
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestPathMatcher.aPath(NiciraConstants.SEC_PROFILE_URI_PREFIX), any(HttpClientContext.class));
 | 
				
			||||||
                SCHEMA2, actualProfiles.getResults().get(1).getSchema());
 | 
					 | 
				
			||||||
        assertEquals("Wrong Schema in the newly created SecurityProfile",
 | 
					 | 
				
			||||||
                2, actualProfiles.getResultCount());
 | 
					 | 
				
			||||||
        assertEquals("Wrong URI for SecurityProfile creation REST service",
 | 
					 | 
				
			||||||
                NiciraNvpApi.SEC_PROFILE_URI_PREFIX, uri);
 | 
					 | 
				
			||||||
        assertEquals("Wrong URI for SecurityProfile creation REST service",
 | 
					 | 
				
			||||||
                NiciraNvpApi.GET_METHOD_TYPE, type);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testFindSecurityProfileByUuid() throws NiciraNvpApiException, IOException {
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
        // Prepare
 | 
					    public void testFindSecurityProfileByUuid() throws Exception {
 | 
				
			||||||
        method = mock(GetMethod.class);
 | 
					        final CloseableHttpResponse response = mock(CloseableHttpResponse.class);
 | 
				
			||||||
        when(method.getStatusCode()).thenReturn(HttpStatus.SC_OK);
 | 
					        when(response.getStatusLine()).thenReturn(HTTP_200_REPSONSE);
 | 
				
			||||||
        when(method.getResponseBodyAsString()).thenReturn(SEC_PROFILE_LIST_JSON_RESPONSE);
 | 
					        when(response.getEntity()).thenReturn(new StringEntity(SEC_PROFILE_LIST_JSON_RESPONSE));
 | 
				
			||||||
        final NameValuePair[] queryString = new NameValuePair[]{
 | 
					        final CloseableHttpClient httpClient = spy(HttpClientHelper.createHttpClient(2));
 | 
				
			||||||
                new NameValuePair("uuid", UUID),
 | 
					        doReturn(response).when(httpClient).execute(any(HttpHost.class), any(HttpRequest.class), any(HttpClientContext.class));
 | 
				
			||||||
                new NameValuePair("fields","*")
 | 
					        final NiciraNvpApi api = buildApi(httpClient);
 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        final List<NameValuePair> queryStringNvps = new ArrayList<>();
 | 
					 | 
				
			||||||
        doAnswer(new Answer<Void>() {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            @Override
 | 
					        final List<SecurityProfile> actualProfiles = api.findSecurityProfile(UUID);
 | 
				
			||||||
            public Void answer(InvocationOnMock invocation) throws Throwable {
 | 
					 | 
				
			||||||
                final NameValuePair[] arguments = (NameValuePair[]) invocation.getArguments()[0];
 | 
					 | 
				
			||||||
                queryStringNvps.addAll(Arrays.asList(arguments));
 | 
					 | 
				
			||||||
                return null;
 | 
					 | 
				
			||||||
            }}).when(method).setQueryString(any(NameValuePair[].class));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Execute
 | 
					        assertThat("Wrong number of results", actualProfiles, hasSize(2));
 | 
				
			||||||
        final NiciraNvpList<SecurityProfile> actualProfiles = api.findSecurityProfile(UUID);
 | 
					        assertThat("Wrong Uuid in the newly created SecurityProfile", actualProfiles, Matchers.<SecurityProfile> contains(
 | 
				
			||||||
 | 
					                        hasProperty("uuid", equalTo(UUID)),
 | 
				
			||||||
        // Assert
 | 
					                        hasProperty("uuid", equalTo(UUID2))));
 | 
				
			||||||
        verify(method, times(1)).releaseConnection();
 | 
					        assertThat("Wrong HREF in the newly created SecurityProfile", actualProfiles, Matchers.<SecurityProfile> contains(
 | 
				
			||||||
        assertTrue(queryStringNvps.containsAll(Arrays.asList(queryString)));
 | 
					                        hasProperty("href", equalTo(HREF)),
 | 
				
			||||||
        assertEquals(queryString.length, queryStringNvps.size());
 | 
					                        hasProperty("href", equalTo(HREF2))));
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					        assertThat("Wrong Schema in the newly created SecurityProfile", actualProfiles, Matchers.<SecurityProfile> contains(
 | 
				
			||||||
                UUID, actualProfiles.getResults().get(0).getUuid());
 | 
					                        hasProperty("schema", equalTo(SCHEMA)),
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					                        hasProperty("schema", equalTo(SCHEMA2))));
 | 
				
			||||||
                HREF, actualProfiles.getResults().get(0).getHref());
 | 
					        verify(response, times(1)).close();
 | 
				
			||||||
        assertEquals("Wrong Schema in the newly created SecurityProfile",
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestMethodMatcher.aMethod("GET"), any(HttpClientContext.class));
 | 
				
			||||||
                SCHEMA, actualProfiles.getResults().get(0).getSchema());
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestQueryMatcher.aQueryThatContains("uuid=" + UUID), any(HttpClientContext.class));
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestQueryMatcher.aQueryThatContains("fields=*"), any(HttpClientContext.class));
 | 
				
			||||||
                UUID2, actualProfiles.getResults().get(1).getUuid());
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestPathMatcher.aPath(NiciraConstants.SEC_PROFILE_URI_PREFIX), any(HttpClientContext.class));
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					 | 
				
			||||||
                HREF2, actualProfiles.getResults().get(1).getHref());
 | 
					 | 
				
			||||||
        assertEquals("Wrong Schema in the newly created SecurityProfile",
 | 
					 | 
				
			||||||
                SCHEMA2, actualProfiles.getResults().get(1).getSchema());
 | 
					 | 
				
			||||||
        assertEquals("Wrong Schema in the newly created SecurityProfile",
 | 
					 | 
				
			||||||
                2, actualProfiles.getResultCount());
 | 
					 | 
				
			||||||
        assertEquals("Wrong URI for SecurityProfile creation REST service",
 | 
					 | 
				
			||||||
                NiciraNvpApi.SEC_PROFILE_URI_PREFIX, uri);
 | 
					 | 
				
			||||||
        assertEquals("Wrong HTTP method for SecurityProfile creation REST service",
 | 
					 | 
				
			||||||
                NiciraNvpApi.GET_METHOD_TYPE, type);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testCreateSecurityProfile() throws NiciraNvpApiException, IOException {
 | 
					    public void testCreateSecurityProfile() throws Exception {
 | 
				
			||||||
        // Prepare
 | 
					        final CloseableHttpResponse response = mock(CloseableHttpResponse.class);
 | 
				
			||||||
        final SecurityProfile inputSecProfile = new SecurityProfile();
 | 
					        when(response.getStatusLine()).thenReturn(HTTP_201_REPSONSE);
 | 
				
			||||||
        method = mock(PostMethod.class);
 | 
					        when(response.getEntity()).thenReturn(new StringEntity(SEC_PROFILE_JSON_RESPONSE));
 | 
				
			||||||
        when(method.getStatusCode()).thenReturn(HttpStatus.SC_CREATED);
 | 
					        final CloseableHttpClient httpClient = spy(HttpClientHelper.createHttpClient(2));
 | 
				
			||||||
        when(method.getResponseBodyAsString()).thenReturn(SEC_PROFILE_JSON_RESPONSE);
 | 
					        doReturn(response).when(httpClient).execute(any(HttpHost.class), any(HttpRequest.class), any(HttpClientContext.class));
 | 
				
			||||||
 | 
					        final NiciraNvpApi api = buildApi(httpClient);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Execute
 | 
					        final SecurityProfile actualSecProfile = api.createSecurityProfile(new SecurityProfile());
 | 
				
			||||||
        final SecurityProfile actualSecProfile = api.createSecurityProfile(inputSecProfile);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Assert
 | 
					        assertThat("Wrong Uuid in the newly created SecurityProfile", actualSecProfile, hasProperty("uuid", equalTo(UUID)));
 | 
				
			||||||
        verify(method, times(1)).releaseConnection();
 | 
					        assertThat("Wrong Href in the newly created SecurityProfile", actualSecProfile, hasProperty("href", equalTo(HREF)));
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					        assertThat("Wrong Schema in the newly created SecurityProfile", actualSecProfile, hasProperty("schema", equalTo(SCHEMA)));
 | 
				
			||||||
                UUID, actualSecProfile.getUuid());
 | 
					        verify(response, times(1)).close();
 | 
				
			||||||
        assertEquals("Wrong Uuid in the newly created SecurityProfile",
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestMethodMatcher.aMethod("POST"), any(HttpClientContext.class));
 | 
				
			||||||
                HREF, actualSecProfile.getHref());
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestPathMatcher.aPath(NiciraConstants.SEC_PROFILE_URI_PREFIX), any(HttpClientContext.class));
 | 
				
			||||||
        assertEquals("Wrong Schema in the newly created SecurityProfile",
 | 
					 | 
				
			||||||
                SCHEMA, actualSecProfile.getSchema());
 | 
					 | 
				
			||||||
        assertEquals("Wrong URI for SecurityProfile creation REST service",
 | 
					 | 
				
			||||||
                NiciraNvpApi.SEC_PROFILE_URI_PREFIX, uri);
 | 
					 | 
				
			||||||
        assertEquals("Wrong HTTP method for SecurityProfile creation REST service",
 | 
					 | 
				
			||||||
                NiciraNvpApi.POST_METHOD_TYPE, type);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testUpdateSecurityProfile() throws NiciraNvpApiException, IOException {
 | 
					    public void testUpdateSecurityProfile() throws Exception {
 | 
				
			||||||
        // Prepare
 | 
					        final CloseableHttpResponse response = mock(CloseableHttpResponse.class);
 | 
				
			||||||
        final SecurityProfile inputSecProfile = new SecurityProfile();
 | 
					        when(response.getStatusLine()).thenReturn(HTTP_201_REPSONSE);
 | 
				
			||||||
        method = mock(PutMethod.class);
 | 
					        when(response.getEntity()).thenReturn(new StringEntity(SEC_PROFILE_JSON_RESPONSE));
 | 
				
			||||||
        when(method.getStatusCode()).thenReturn(HttpStatus.SC_OK);
 | 
					        final CloseableHttpClient httpClient = spy(HttpClientHelper.createHttpClient(2));
 | 
				
			||||||
 | 
					        doReturn(response).when(httpClient).execute(any(HttpHost.class), any(HttpRequest.class), any(HttpClientContext.class));
 | 
				
			||||||
 | 
					        final NiciraNvpApi api = buildApi(httpClient);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Execute
 | 
					        api.updateSecurityProfile(new SecurityProfile(), UUID);
 | 
				
			||||||
        api.updateSecurityProfile(inputSecProfile, UUID);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Assert
 | 
					        verify(response, times(1)).close();
 | 
				
			||||||
        verify(method, times(1)).releaseConnection();
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestMethodMatcher.aMethod("PUT"), any(HttpClientContext.class));
 | 
				
			||||||
        assertEquals("Wrong URI for SecurityProfile creation REST service",
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestPathMatcher.aPath(NiciraConstants.SEC_PROFILE_URI_PREFIX + "/" + UUID), any(HttpClientContext.class));
 | 
				
			||||||
                UUID_SEC_PROFILE_URI, uri);
 | 
					 | 
				
			||||||
        assertEquals("Wrong HTTP method for SecurityProfile creation REST service",
 | 
					 | 
				
			||||||
                NiciraNvpApi.PUT_METHOD_TYPE, type);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testDeleteSecurityProfile() throws NiciraNvpApiException, IOException {
 | 
					    public void testDeleteSecurityProfile() throws Exception {
 | 
				
			||||||
        // Prepare
 | 
					        final CloseableHttpResponse response = mock(CloseableHttpResponse.class);
 | 
				
			||||||
        method = mock(DeleteMethod.class);
 | 
					        when(response.getStatusLine()).thenReturn(HTTP_201_REPSONSE);
 | 
				
			||||||
        when(method.getStatusCode()).thenReturn(HttpStatus.SC_NO_CONTENT);
 | 
					        when(response.getEntity()).thenReturn(new StringEntity(SEC_PROFILE_JSON_RESPONSE));
 | 
				
			||||||
 | 
					        final CloseableHttpClient httpClient = spy(HttpClientHelper.createHttpClient(2));
 | 
				
			||||||
 | 
					        doReturn(response).when(httpClient).execute(any(HttpHost.class), any(HttpRequest.class), any(HttpClientContext.class));
 | 
				
			||||||
 | 
					        final NiciraNvpApi api = buildApi(httpClient);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        api.deleteSecurityProfile(UUID);
 | 
					        api.deleteSecurityProfile(UUID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Assert
 | 
					        verify(response, times(1)).close();
 | 
				
			||||||
        verify(method, times(1)).releaseConnection();
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestMethodMatcher.aMethod("DELETE"), any(HttpClientContext.class));
 | 
				
			||||||
        assertEquals("Wrong URI for SecurityProfile deletion REST service", UUID_SEC_PROFILE_URI, uri);
 | 
					        verify(httpClient).execute(any(HttpHost.class), HttpUriRequestPathMatcher.aPath(NiciraConstants.SEC_PROFILE_URI_PREFIX + "/" + UUID), any(HttpClientContext.class));
 | 
				
			||||||
        assertEquals("Wrong HTTP method for SecurityProfile deletion REST service", NiciraNvpApi.DELETE_METHOD_TYPE, type);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test(expected = JsonParseException.class)
 | 
					 | 
				
			||||||
    public void testRoutingConfigAdapterNoType() throws NiciraNvpApiException, IOException {
 | 
					 | 
				
			||||||
        // Prepare
 | 
					 | 
				
			||||||
        final NiciraNvpApi api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
        final Gson gson = api.restConnector.getGson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        gson.fromJson("{}", RoutingConfig.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Assert: JsonParseException should be thrown
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test(expected = JsonParseException.class)
 | 
					 | 
				
			||||||
    public void testRoutingConfigAdapterWrongType() throws NiciraNvpApiException, IOException {
 | 
					 | 
				
			||||||
        // Prepare
 | 
					 | 
				
			||||||
        final NiciraNvpApi api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
        final Gson gson = api.restConnector.getGson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        gson.fromJson("{type : \"WrongType\"}", RoutingConfig.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Assert: JsonParseException should be thrown
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test()
 | 
					 | 
				
			||||||
    public void testRoutingConfigAdapter() throws NiciraNvpApiException, IOException {
 | 
					 | 
				
			||||||
        // Prepare
 | 
					 | 
				
			||||||
        final NiciraNvpApi api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
        final Gson gson = api.restConnector.getGson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        final SingleDefaultRouteImplicitRoutingConfig singleDefaultRouteImplicitRoutingConfig =
 | 
					 | 
				
			||||||
                (SingleDefaultRouteImplicitRoutingConfig) gson.fromJson("{type : \"SingleDefaultRouteImplicitRoutingConfig\"}", RoutingConfig.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Assert: JsonParseException should be thrown
 | 
					 | 
				
			||||||
        assertEquals("", SingleDefaultRouteImplicitRoutingConfig.class, singleDefaultRouteImplicitRoutingConfig.getClass());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test(expected = JsonParseException.class)
 | 
					 | 
				
			||||||
    public void testNatRuleAdapterNoType() throws NiciraNvpApiException, IOException {
 | 
					 | 
				
			||||||
        // Prepare
 | 
					 | 
				
			||||||
        final NiciraNvpApi api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
        final Gson gson = api.restConnector.getGson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        gson.fromJson("{}", NatRule.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Assert: JsonParseException should be thrown
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test(expected = JsonParseException.class)
 | 
					 | 
				
			||||||
    public void testNatRuleAdapterWrongType() throws NiciraNvpApiException, IOException {
 | 
					 | 
				
			||||||
        // Prepare
 | 
					 | 
				
			||||||
        final NiciraNvpApi api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
        final Gson gson = api.restConnector.getGson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        gson.fromJson("{type : \"WrongType\"}", NatRule.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Assert: JsonParseException should be thrown
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test()
 | 
					 | 
				
			||||||
    public void testRoutingConfigAdapterWithSourceNatRule() throws NiciraNvpApiException, IOException {
 | 
					 | 
				
			||||||
        // Prepare
 | 
					 | 
				
			||||||
        final NiciraNvpApi api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
        final Gson gson = api.restConnector.getGson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        final SourceNatRule sourceNatRule =
 | 
					 | 
				
			||||||
                (SourceNatRule) gson.fromJson("{type : \"SourceNatRule\"}", NatRule.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Assert: JsonParseException should be thrown
 | 
					 | 
				
			||||||
        assertEquals("", SourceNatRule.class, sourceNatRule.getClass());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test()
 | 
					 | 
				
			||||||
    public void testRoutingConfigAdapterWithDestinationNatRule() throws NiciraNvpApiException, IOException {
 | 
					 | 
				
			||||||
        // Prepare
 | 
					 | 
				
			||||||
        final NiciraNvpApi api = new NiciraNvpApi();
 | 
					 | 
				
			||||||
        final Gson gson = api.restConnector.getGson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Execute
 | 
					 | 
				
			||||||
        final DestinationNatRule destinationNatRule =
 | 
					 | 
				
			||||||
                (DestinationNatRule) gson.fromJson("{type : \"DestinationNatRule\"}", NatRule.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Assert: JsonParseException should be thrown
 | 
					 | 
				
			||||||
        assertEquals("", DestinationNatRule.class, destinationNatRule.getClass());
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -45,7 +45,6 @@ import com.cloud.network.nicira.LogicalRouterPort;
 | 
				
			|||||||
import com.cloud.network.nicira.LogicalSwitch;
 | 
					import com.cloud.network.nicira.LogicalSwitch;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApi;
 | 
					import com.cloud.network.nicira.NiciraNvpApi;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApiException;
 | 
					import com.cloud.network.nicira.NiciraNvpApiException;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpList;
 | 
					 | 
				
			||||||
import com.cloud.network.nicira.VifAttachment;
 | 
					import com.cloud.network.nicira.VifAttachment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class NiciraNvpRequestWrapperTest {
 | 
					public class NiciraNvpRequestWrapperTest {
 | 
				
			||||||
@ -144,10 +143,6 @@ public class NiciraNvpRequestWrapperTest {
 | 
				
			|||||||
        final List<LogicalRouterPort> listPorts = new ArrayList<LogicalRouterPort>();
 | 
					        final List<LogicalRouterPort> listPorts = new ArrayList<LogicalRouterPort>();
 | 
				
			||||||
        listPorts.add(port1);
 | 
					        listPorts.add(port1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final NiciraNvpList<LogicalRouterPort> ports = new NiciraNvpList<LogicalRouterPort>();
 | 
					 | 
				
			||||||
        ports.setResults(listPorts);
 | 
					 | 
				
			||||||
        ports.setResultCount(1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        final String logicalRouterUuid = "d2e05a9e-7120-4487-a5fc-414ab36d9345";
 | 
					        final String logicalRouterUuid = "d2e05a9e-7120-4487-a5fc-414ab36d9345";
 | 
				
			||||||
        final String l3GatewayServiceUuid = "d2e05a9e-7120-4487-a5fc-414ab36d9345";
 | 
					        final String l3GatewayServiceUuid = "d2e05a9e-7120-4487-a5fc-414ab36d9345";
 | 
				
			||||||
        final List<String> publicCidrs = new ArrayList<String>();
 | 
					        final List<String> publicCidrs = new ArrayList<String>();
 | 
				
			||||||
@ -158,7 +153,7 @@ public class NiciraNvpRequestWrapperTest {
 | 
				
			|||||||
        when(niciraNvpResource.getNiciraNvpApi()).thenReturn(niciraNvpApi);
 | 
					        when(niciraNvpResource.getNiciraNvpApi()).thenReturn(niciraNvpApi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            when(niciraNvpApi.findLogicalRouterPortByGatewayServiceUuid(command.getLogicalRouterUuid(), command.getL3GatewayServiceUuid())).thenReturn(ports);
 | 
					            when(niciraNvpApi.findLogicalRouterPortByGatewayServiceUuid(command.getLogicalRouterUuid(), command.getL3GatewayServiceUuid())).thenReturn(listPorts);
 | 
				
			||||||
            doNothing().when(niciraNvpApi).updateLogicalRouterPort(command.getLogicalRouterUuid(), port1);
 | 
					            doNothing().when(niciraNvpApi).updateLogicalRouterPort(command.getLogicalRouterUuid(), port1);
 | 
				
			||||||
        } catch (final NiciraNvpApiException e) {
 | 
					        } catch (final NiciraNvpApiException e) {
 | 
				
			||||||
            fail(e.getMessage());
 | 
					            fail(e.getMessage());
 | 
				
			||||||
 | 
				
			|||||||
@ -83,7 +83,6 @@ import com.cloud.network.nicira.LogicalSwitchPort;
 | 
				
			|||||||
import com.cloud.network.nicira.NatRule;
 | 
					import com.cloud.network.nicira.NatRule;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApi;
 | 
					import com.cloud.network.nicira.NiciraNvpApi;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpApiException;
 | 
					import com.cloud.network.nicira.NiciraNvpApiException;
 | 
				
			||||||
import com.cloud.network.nicira.NiciraNvpList;
 | 
					 | 
				
			||||||
import com.cloud.network.nicira.SourceNatRule;
 | 
					import com.cloud.network.nicira.SourceNatRule;
 | 
				
			||||||
import com.cloud.network.utils.CommandRetryUtility;
 | 
					import com.cloud.network.utils.CommandRetryUtility;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -95,10 +94,10 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
    private CommandRetryUtility retryUtility;
 | 
					    private CommandRetryUtility retryUtility;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Before
 | 
					    @Before
 | 
				
			||||||
    public void setUp() throws ConfigurationException {
 | 
					    public void setUp() {
 | 
				
			||||||
        resource = new NiciraNvpResource() {
 | 
					        resource = new NiciraNvpResource() {
 | 
				
			||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            protected NiciraNvpApi createNiciraNvpApi() {
 | 
					            protected NiciraNvpApi createNiciraNvpApi(final String host, final String username, final String password) {
 | 
				
			||||||
                return nvpApi;
 | 
					                return nvpApi;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
@ -120,20 +119,6 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
        resource.configure("NiciraNvpResource", Collections.<String, Object> emptyMap());
 | 
					        resource.configure("NiciraNvpResource", Collections.<String, Object> emptyMap());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void resourceConfigure() throws ConfigurationException {
 | 
					 | 
				
			||||||
        resource.configure("NiciraNvpResource", parameters);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        verify(nvpApi).setAdminCredentials("adminuser", "adminpass");
 | 
					 | 
				
			||||||
        verify(nvpApi).setControllerAddress("127.0.0.1");
 | 
					 | 
				
			||||||
        assertTrue("Incorrect resource name", "nvptestdevice".equals(resource.getName()));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /* Pretty lame test, but here to assure this plugin fails
 | 
					 | 
				
			||||||
         * if the type name ever changes from L2Networking
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        assertTrue("Incorrect resource type", resource.getType() == Host.Type.L2Networking);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testInitialization() throws ConfigurationException {
 | 
					    public void testInitialization() throws ConfigurationException {
 | 
				
			||||||
        resource.configure("NiciraNvpResource", parameters);
 | 
					        resource.configure("NiciraNvpResource", parameters);
 | 
				
			||||||
@ -309,10 +294,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
    public void testFindLogicalSwitchPort() throws ConfigurationException, NiciraNvpApiException {
 | 
					    public void testFindLogicalSwitchPort() throws ConfigurationException, NiciraNvpApiException {
 | 
				
			||||||
        resource.configure("NiciraNvpResource", parameters);
 | 
					        resource.configure("NiciraNvpResource", parameters);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        final List<LogicalSwitchPort> lspl = Arrays.asList(new LogicalSwitchPort());
 | 
				
			||||||
        final
 | 
					 | 
				
			||||||
        NiciraNvpList<LogicalSwitchPort> lspl = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(lspl.getResultCount()).thenReturn(1);
 | 
					 | 
				
			||||||
        when(nvpApi.findLogicalSwitchPortsByUuid("aaaa", "bbbb")).thenReturn(lspl);
 | 
					        when(nvpApi.findLogicalSwitchPortsByUuid("aaaa", "bbbb")).thenReturn(lspl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final FindLogicalSwitchPortAnswer flspa = (FindLogicalSwitchPortAnswer) resource.executeRequest(new FindLogicalSwitchPortCommand("aaaa", "bbbb"));
 | 
					        final FindLogicalSwitchPortAnswer flspa = (FindLogicalSwitchPortAnswer) resource.executeRequest(new FindLogicalSwitchPortCommand("aaaa", "bbbb"));
 | 
				
			||||||
@ -324,9 +306,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
        resource.configure("NiciraNvpResource", parameters);
 | 
					        resource.configure("NiciraNvpResource", parameters);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
        final
 | 
					        final List<LogicalSwitchPort> lspl = Collections.EMPTY_LIST;
 | 
				
			||||||
        NiciraNvpList<LogicalSwitchPort> lspl = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(lspl.getResultCount()).thenReturn(0);
 | 
					 | 
				
			||||||
        when(nvpApi.findLogicalSwitchPortsByUuid("aaaa", "bbbb")).thenReturn(lspl);
 | 
					        when(nvpApi.findLogicalSwitchPortsByUuid("aaaa", "bbbb")).thenReturn(lspl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final FindLogicalSwitchPortAnswer flspa = (FindLogicalSwitchPortAnswer) resource.executeRequest(new FindLogicalSwitchPortCommand("aaaa", "bbbb"));
 | 
					        final FindLogicalSwitchPortAnswer flspa = (FindLogicalSwitchPortAnswer) resource.executeRequest(new FindLogicalSwitchPortCommand("aaaa", "bbbb"));
 | 
				
			||||||
@ -427,8 +407,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        final ConfigurePublicIpsOnLogicalRouterCommand cmd = mock(ConfigurePublicIpsOnLogicalRouterCommand.class);
 | 
					        final ConfigurePublicIpsOnLogicalRouterCommand cmd = mock(ConfigurePublicIpsOnLogicalRouterCommand.class);
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
        final
 | 
					        final List<LogicalRouterPort> list = Collections.EMPTY_LIST;
 | 
				
			||||||
        NiciraNvpList<LogicalRouterPort> list = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when(cmd.getLogicalRouterUuid()).thenReturn("aaaaa");
 | 
					        when(cmd.getLogicalRouterUuid()).thenReturn("aaaaa");
 | 
				
			||||||
        when(cmd.getL3GatewayServiceUuid()).thenReturn("bbbbb");
 | 
					        when(cmd.getL3GatewayServiceUuid()).thenReturn("bbbbb");
 | 
				
			||||||
@ -472,8 +451,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
        final
 | 
					        final List<NatRule> storedRules = Collections.EMPTY_LIST;
 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Mock the api create calls
 | 
					        // Mock the api create calls
 | 
				
			||||||
@ -522,11 +500,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
					        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        final List<NatRule> storedRules = Arrays.asList(rulepair);
 | 
				
			||||||
        final
 | 
					 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(storedRules.getResultCount()).thenReturn(2);
 | 
					 | 
				
			||||||
        when(storedRules.getResults()).thenReturn(Arrays.asList(rulepair));
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final ConfigureStaticNatRulesOnLogicalRouterAnswer a = (ConfigureStaticNatRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
					        final ConfigureStaticNatRulesOnLogicalRouterAnswer a = (ConfigureStaticNatRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
				
			||||||
@ -571,11 +545,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
					        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        final List<NatRule> storedRules = Arrays.asList(rulepair);
 | 
				
			||||||
        final
 | 
					 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(storedRules.getResultCount()).thenReturn(2);
 | 
					 | 
				
			||||||
        when(storedRules.getResults()).thenReturn(Arrays.asList(rulepair));
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final ConfigureStaticNatRulesOnLogicalRouterAnswer a = (ConfigureStaticNatRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
					        final ConfigureStaticNatRulesOnLogicalRouterAnswer a = (ConfigureStaticNatRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
				
			||||||
@ -616,9 +586,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
        final
 | 
					        final List<NatRule> storedRules = Collections.EMPTY_LIST;
 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(storedRules.getResultCount()).thenReturn(0);
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final ConfigureStaticNatRulesOnLogicalRouterAnswer a = (ConfigureStaticNatRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
					        final ConfigureStaticNatRulesOnLogicalRouterAnswer a = (ConfigureStaticNatRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
				
			||||||
@ -644,8 +612,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
        final
 | 
					        final List<NatRule> storedRules = Collections.EMPTY_LIST;
 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Mock the api create calls
 | 
					        // Mock the api create calls
 | 
				
			||||||
@ -694,11 +661,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
					        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        final List<NatRule> storedRules = Arrays.asList(rulepair);
 | 
				
			||||||
        final
 | 
					 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(storedRules.getResultCount()).thenReturn(2);
 | 
					 | 
				
			||||||
        when(storedRules.getResults()).thenReturn(Arrays.asList(rulepair));
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final ConfigurePortForwardingRulesOnLogicalRouterAnswer a = (ConfigurePortForwardingRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
					        final ConfigurePortForwardingRulesOnLogicalRouterAnswer a = (ConfigurePortForwardingRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
				
			||||||
@ -743,11 +706,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
					        when(nvpApi.createLogicalRouterNatRule(eq("aaaaa"), (NatRule) any())).thenReturn(rulepair[0]).thenReturn(rulepair[1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        final List<NatRule> storedRules = Arrays.asList(rulepair);
 | 
				
			||||||
        final
 | 
					 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(storedRules.getResultCount()).thenReturn(2);
 | 
					 | 
				
			||||||
        when(storedRules.getResults()).thenReturn(Arrays.asList(rulepair));
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final ConfigurePortForwardingRulesOnLogicalRouterAnswer a = (ConfigurePortForwardingRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
					        final ConfigurePortForwardingRulesOnLogicalRouterAnswer a = (ConfigurePortForwardingRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
				
			||||||
@ -788,9 +747,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
        final
 | 
					        final List<NatRule> storedRules = Collections.EMPTY_LIST;
 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(storedRules.getResultCount()).thenReturn(0);
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final ConfigurePortForwardingRulesOnLogicalRouterAnswer a = (ConfigurePortForwardingRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
					        final ConfigurePortForwardingRulesOnLogicalRouterAnswer a = (ConfigurePortForwardingRulesOnLogicalRouterAnswer) resource.executeRequest(cmd);
 | 
				
			||||||
@ -816,8 +773,7 @@ public class NiciraNvpResourceTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Mock the api find call
 | 
					        // Mock the api find call
 | 
				
			||||||
        @SuppressWarnings("unchecked")
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
        final
 | 
					        final List<NatRule> storedRules = Collections.EMPTY_LIST;
 | 
				
			||||||
        NiciraNvpList<NatRule> storedRules = mock(NiciraNvpList.class);
 | 
					 | 
				
			||||||
        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
					        when(nvpApi.findNatRulesByLogicalRouterUuid("aaaaa")).thenReturn(storedRules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Mock the api create calls
 | 
					        // Mock the api create calls
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					//
 | 
				
			||||||
 | 
					// Licensed to the Apache Software Foundation (ASF) under one
 | 
				
			||||||
 | 
					// or more contributor license agreements.  See the NOTICE file
 | 
				
			||||||
 | 
					// distributed with this work for additional information
 | 
				
			||||||
 | 
					// regarding copyright ownership.  The ASF licenses this file
 | 
				
			||||||
 | 
					// to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					// "License"); you may not use this file except in compliance
 | 
				
			||||||
 | 
					// with the License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing,
 | 
				
			||||||
 | 
					// software distributed under the License is distributed on an
 | 
				
			||||||
 | 
					// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
				
			||||||
 | 
					// KIND, either express or implied.  See the License for the
 | 
				
			||||||
 | 
					// specific language governing permissions and limitations
 | 
				
			||||||
 | 
					// under the License.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package com.cloud.utils.rest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.hamcrest.Matchers.equalTo;
 | 
				
			||||||
 | 
					import static org.mockito.Matchers.argThat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.http.client.methods.HttpUriRequest;
 | 
				
			||||||
 | 
					import org.hamcrest.FeatureMatcher;
 | 
				
			||||||
 | 
					import org.hamcrest.Matcher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HttpUriRequestPathMatcher extends FeatureMatcher<HttpUriRequest, String> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static HttpUriRequest aPath(final String path) {
 | 
				
			||||||
 | 
					        return argThat(new HttpUriRequestPathMatcher(equalTo(path), "path", "path"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public HttpUriRequestPathMatcher(final Matcher<? super String> subMatcher, final String featureDescription, final String featureName) {
 | 
				
			||||||
 | 
					        super(subMatcher, featureDescription, featureName);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected String featureValueOf(final HttpUriRequest actual) {
 | 
				
			||||||
 | 
					        return actual.getURI().getPath();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user