/*- * ============LICENSE_START======================================================= * Ran Simulator Controller * ================================================================================ * Copyright (C) 2020 Wipro Limited. * ================================================================================ * Licensed 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. * ============LICENSE_END========================================================= */ package org.onap.ransim.rest.client; import java.nio.charset.Charset; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.eclipse.persistence.internal.oxm.conversion.Base64; import org.onap.ransim.rest.api.controller.RansimControllerServices; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; public class RestClient { static Logger log = Logger.getLogger(RansimControllerServices.class.getName()); HttpHeaders createHeaders(String username, String password) { return new HttpHeaders() { { String auth = username + ":" + password; byte[] encodedAuth = Base64.base64Encode(auth.getBytes(Charset.forName("US-ASCII"))); String authHeader = "Basic " + new String(encodedAuth); set("Authorization", authHeader); set("Content-Type", "application/xml"); set("Accept", "application/xml"); } }; } /** * Sends mount request to sdnr. * * @param serverId * netconf server id name * @param ip * server ip address * @param port * port number * @param agentIp * agent ip address * @param agentPort * agent port number * @param agentUsername * agent username * @param agentPassword * agent password * @return returns the message to be passed */ public String sendMountRequestToSdnr(String serverId, String ip, int port, String agentIp, String agentPort, String agentUsername, String agentPassword) { String requestBody = " " + serverId + " admin admin " + agentIp + " " + serverId + " " + agentPort + " false false 0 20000 60000 1.1 2000 false 60 0 60"; HttpHeaders headers = createHeaders(agentUsername, agentPassword); log.info("request : " + requestBody); log.info("headers : " + headers); for (Map.Entry> entry : headers.entrySet()) { log.info("Key:" + entry.getKey() + " , Value:" + entry.getValue()); } RestTemplate restTemplate = new RestTemplate(); String url = "http://" + ip + ":" + port + "/restconf/config/network-topology:network-topology/topology/topology-netconf/node/" + serverId; HttpEntity entity = new HttpEntity(requestBody, headers); ResponseEntity result = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class); log.info("request sent, result: " + result); return result.toString(); } /** * Sends an unmount request to sdnr. * * @param serverId * netconf server id name * @param ip * ip address * @param port * port number * @param sdnrUsername * sdnr username * @param sdnrPassword * sdnr password * @return returns the message to be passed */ public String sendUnmountRequestToSdnr(String serverId, String ip, int port, String sdnrUsername, String sdnrPassword) { String url = "http://" + ip + ":" + port + "/restconf/config/network-topology:network-topology/topology/topology-netconf/node/" + serverId; RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = createHeaders(sdnrUsername, sdnrPassword); HttpEntity entity = new HttpEntity("parameters", headers); ResponseEntity result = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class); log.info("request sent, result: " + result); return result.toString(); } }