blob: 688f00af222840fccdc34a96464eb743cd0807c5 [file] [log] [blame]
/*-
* ============LICENSE_START=======================================================
* OSAM Core
* ================================================================================
* Copyright (C) 2018 Netsia
* ================================================================================
* 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=========================================================
*/
/*
* Copyright 2015, Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.onap.osam.external.grpc;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import lombok.extern.slf4j.Slf4j;
import org.onap.osam.common.exception.NotFoundException;
import org.onap.osam.grpc.*;
import org.onap.osam.model.dao.Chassis;
import org.onap.osam.model.dao.OLTSlot;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
@PropertySource("classpath:abstractolt.properties")
@Slf4j
public class AbstractOLTClient {
private static final String ABSTRACTOLT_HOST = "${abstractolt.host}";
private static final String ABSTRACTOLT_PORT = "${abstractolt.port}";
public static int NUMBER_OF_OLT_PORTS = 16;
private AbstractOLTGrpc.AbstractOLTBlockingStub blockingStub;
@Value(ABSTRACTOLT_HOST)
private String host;
@Value(ABSTRACTOLT_PORT)
private int port;
@PostConstruct
private void init() {
ManagedChannel managedChannel = ManagedChannelBuilder
.forAddress(host, port).usePlaintext().build();
blockingStub = AbstractOLTGrpc.newBlockingStub(managedChannel);
}
/** create chassis */
public String createChassis(Chassis chassis) {
String deviceID = null;
log.info("createChassis begin, chassis: {}", chassis);
String clli = chassis.getClli();
int rack = chassis.getRack();
int shelf = chassis.getShelf();
if (chassis.getAccessPod() == null) {
throw new NotFoundException("Access pod not found");
}
String xosIP = chassis.getAccessPod().getCoreIp();
int port = Integer.parseInt(chassis.getAccessPod().getCorePort());
String user = chassis.getAccessPod().getUsername();
String pass = chassis.getAccessPod().getPassword();
AddChassisMessage request = AddChassisMessage.newBuilder()
.setCLLI(clli)
.setRack(rack)
.setShelf(shelf)
.setXOSIP(xosIP)
.setXOSPort(port)
.setXOSUser(user)
.setXOSPassword(pass)
.build();
AddChassisReturn response = blockingStub.createChassis(request);
deviceID = response.getDeviceID();
log.info("createChassis with device id : " + deviceID);
return deviceID;
}
public String createOLTChassis(OLTSlot olt) {
String deviceID = null, chassisDeviceId = null;
try {
log.info("createOLTChassis begin, olt:{}", olt);
String clli = olt.getChassis().getClli();
AddOLTChassisMessage.OltDriver oltDriver = AddOLTChassisMessage.OltDriver.forNumber((olt.getOltDriver().ordinal()));
AddOLTChassisMessage.OltType oltType = AddOLTChassisMessage.OltType.forNumber((olt.getOltType().ordinal()));
AddOLTChassisMessage request = AddOLTChassisMessage.newBuilder()
.setCLLI(clli)
.setDriver(oltDriver)
.setNumPorts(NUMBER_OF_OLT_PORTS)
.setSlotPort(olt.getPort())
.setSlotIP(olt.getIpAddress())
.setType(oltType)
.build();
AddOLTChassisReturn response = blockingStub.createOLTChassis(request);
deviceID = response.getDeviceID();
chassisDeviceId = response.getChassisDeviceID();
log.info("createOLTChassis with device id : {} chassisDeviceId : {}",chassisDeviceId,deviceID);
} catch (RuntimeException e) {
log.error("createOLTChassis RPC failed", e);
}
return deviceID;
}
public boolean provisionONT(String clli, int slotNumber, int portNumber, int ontNumber, String serialNumber) {
boolean result = false;
try {
log.info("provisionONT begin, clli: {}, slotNumber: {}, portNumber:{}, ontNumber:{}, serialNumber:{}", clli, slotNumber, portNumber, ontNumber, serialNumber);
AddOntMessage request = AddOntMessage.newBuilder()
.setCLLI(clli)
.setPortNumber(portNumber)
.setSlotNumber(slotNumber)
.setOntNumber(ontNumber)
.setSerialNumber(serialNumber)
.build();
AddOntReturn response = blockingStub.provisionOnt(request);
result = response.getSuccess();
log.info("provisionONT with device id : {} success : {}" + serialNumber, result);
} catch (RuntimeException e) {
log.error("provisionONT RPC failed", e);
}
return result;
}
}