SEBA-122
bin/client is now cmdline app, tosca is sent to xos
Change-Id: I7bbf59569b5c96062aa1c7681708a4cf39532ae2
diff --git a/api/abstract_olt_api.proto b/api/abstract_olt_api.proto
index 72dad9b..6da61c8 100644
--- a/api/abstract_olt_api.proto
+++ b/api/abstract_olt_api.proto
@@ -20,6 +20,8 @@
string CLLI =1;
string VCoreIP =2;
int32 VCorePort=3;
+ int32 Rack=4;
+ int32 Shelf=5;
}
message AddChassisReturn{
string DeviceID = 1;
@@ -32,7 +34,7 @@
fixed32 NumPorts = 5;
bool Activate = 6;
enum OltDriver {
- openoltDriver = 0;
+ openoltDriver= 0;
asfvolt16Driver=1;
adtranDriver=2;
tibitsDriver=3;
diff --git a/api/handler.go b/api/handler.go
index 6beba76..bb1a9b3 100644
--- a/api/handler.go
+++ b/api/handler.go
@@ -17,6 +17,7 @@
package api
import (
+ "errors"
"fmt"
"log"
"net"
@@ -46,8 +47,8 @@
if chassis != nil {
return &AddChassisReturn{DeviceID: chassis.CLLI}, nil
}
- abstractChassis := abstract.GenerateChassis(clli)
- phyChassis := &physical.Chassis{CLLI: clli, VCoreAddress: net.TCPAddr{IP: net.ParseIP(in.GetVCoreIP()), Port: int(in.GetVCorePort())}}
+ abstractChassis := abstract.GenerateChassis(clli, int(in.GetRack()), int(in.GetShelf()))
+ phyChassis := &physical.Chassis{CLLI: clli, VCoreAddress: net.TCPAddr{IP: net.ParseIP(in.GetVCoreIP()), Port: int(in.GetVCorePort())}, Rack: int(in.GetRack()), Shelf: int(in.GetShelf())}
if settings.GetDebug() {
output := fmt.Sprintf("%v", abstractChassis)
formatted := strings.Replace(output, "{", "\n{", -1)
@@ -68,6 +69,8 @@
clli := in.GetCLLI()
chassis := (*phyChassisMap)[clli]
if chassis == nil {
+ errString := fmt.Sprintf("There is no chassis with CLLI of %s", clli)
+ return &AddOLTChassisReturn{DeviceID: "", ChassisDeviceID: ""}, errors.New(errString)
}
oltType := in.GetType()
address := net.TCPAddr{IP: net.ParseIP(in.GetSlotIP()), Port: int(in.GetSlotPort())}
@@ -80,12 +83,10 @@
case AddOLTChassisMessage_adtran:
case AddOLTChassisMessage_tibit:
}
-
err := AddCard(chassis, olt)
if err != nil {
//TODO do something
}
-
return &AddOLTChassisReturn{DeviceID: in.GetHostname(), ChassisDeviceID: clli}, nil
}
@@ -102,6 +103,7 @@
for i := 0; i < len(ports); i++ {
absPort, _ := absChassis.NextPort()
+
absPort.PhysPort = &ports[i]
//AssignTraits(&ports[i], absPort)
}
@@ -116,6 +118,10 @@
absChassisMap := models.GetAbstractChassisMap()
clli := in.GetCLLI()
chassis := (*absChassisMap)[clli]
+ if chassis == nil {
+ errString := fmt.Sprintf("There is no chassis with CLLI of %s", clli)
+ return &AddOntReturn{Success: false}, errors.New(errString)
+ }
err := chassis.ActivateONT(int(in.GetSlotNumber()), int(in.GetPortNumber()), int(in.GetOntNumber()), in.GetSerialNumber())
if err != nil {
diff --git a/api/handler_test.go b/api/handler_test.go
deleted file mode 100644
index 59aad10..0000000
--- a/api/handler_test.go
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- Copyright 2017 the original author or authors.
-
- 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.
-*/
-
-package api_test
-
-import (
- "fmt"
- "testing"
-
- "gerrit.opencord.org/abstract-olt/api"
- "gerrit.opencord.org/abstract-olt/models/abstract"
- "gerrit.opencord.org/abstract-olt/models/physical"
- "golang.org/x/net/context"
-)
-
-var clli string
-var slotHostname = "SlotOne"
-var ctx context.Context
-var server api.Server
-
-func TestHandler_CreateChassis(t *testing.T) {
- fmt.Println("in handlerTest_CreateChassis")
- ctx = context.Background()
- server = api.Server{}
- message := &api.AddChassisMessage{CLLI: "my cilli", VCoreIP: "192.168.0.1", VCorePort: 9191}
- ret, err := server.CreateChassis(ctx, message)
- if err != nil {
- t.Fatalf("CreateChassis failed %v\n", err)
- }
- clli = ret.DeviceID
-}
-func TestHandler_CreateOLTChassis(t *testing.T) {
- fmt.Println("in handlerTest_CreateOltChassis")
- message := &api.AddOLTChassisMessage{CLLI: clli, SlotIP: "12.2.2.0", SlotPort: 9191,
- Hostname: slotHostname, Type: api.AddOLTChassisMessage_edgecore}
- ret, err := server.CreateOLTChassis(ctx, message)
- if err != nil {
- t.Fatalf("CreateOLTChassis failed %v\n", err)
- }
- fmt.Printf("CreateOLTChassis success %v\n", ret)
-}
-func TestHandler_ProvisionOnt(t *testing.T) {
- ctx = context.Background()
- server = api.Server{}
- fmt.Println("in handlerTest_ProvisonOnt")
- // this one should succeed
- message := &api.AddOntMessage{CLLI: clli, SlotNumber: 1, PortNumber: 3, OntNumber: 2, SerialNumber: "2033029402"}
- ret, err := server.ProvisionOnt(ctx, message)
- if err != nil {
- t.Fatalf("ProvisionOnt failed %v\n", err)
- }
- // do it again on same ont/port should fail with AllReadyActiveError
- ret, err = server.ProvisionOnt(ctx, message)
- if err != nil {
- switch err.(type) {
- case *physical.AllReadyActiveError:
- fmt.Printf("ProvisionOnt failed as it should with %v\n", err)
- default:
- t.Fatalf("ProvsionOnt test failed with %v\n", err)
- }
-
- } else {
- t.Fatalf("ProvsionOnt should have failed with AllReadyActiveError but didn't")
- }
-
- // this one should fail
- //SlotNumber 1 hasn't been provisioned
- message = &api.AddOntMessage{CLLI: clli, SlotNumber: 2, PortNumber: 3, OntNumber: 2, SerialNumber: "2033029402"}
- ret, err = server.ProvisionOnt(ctx, message)
- if err != nil {
- switch err.(type) {
- case *abstract.UnprovisonedPortError:
- fmt.Printf("ProvisionOnt failed as it should with %v\n", err)
- default:
- t.Fatalf("ProvsionOnt test failed with %v\n", err)
- }
- } else {
- t.Fatalf("ProvsionOnt should have failed but didn't")
- }
- fmt.Printf("ProvisionOnt success %v\n", ret)
-}
-func TestHandler_DeleteOnt(t *testing.T) {
- ctx = context.Background()
- server = api.Server{}
- fmt.Println("in handlerTest_DeleteOnt")
- // this one should succeed
- //De-Activate ONT 3 on PONPort 0 Slot 0 on my cilli but not active
- message := &api.DeleteOntMessage{CLLI: clli, SlotNumber: 1, PortNumber: 3, OntNumber: 2, SerialNumber: "2033029402"}
- ret, err := server.DeleteOnt(ctx, message)
- if err != nil {
- t.Fatalf("DeleteOnt failed %v\n", err)
- }
- // This should fail with AllReadyDeactivatedError
- ret, err = server.DeleteOnt(ctx, message)
- if err != nil {
- switch err.(type) {
- case *physical.AllReadyDeactivatedError:
- fmt.Printf("DeleteOnt failed as expected with %v\n", err)
- default:
- t.Fatalf("DeleteOnt failed with %v\n", err)
- }
- } else {
- t.Fatal("DeleteOnt should have failed with AllReadyDeactivatedError")
- }
-
- // this one should fail
- //SlotNumber 1 hasn't been provisioned
- message = &api.DeleteOntMessage{CLLI: clli, SlotNumber: 2, PortNumber: 3, OntNumber: 2, SerialNumber: "2033029402"}
- ret, err = server.DeleteOnt(ctx, message)
- if err != nil {
- switch err.(type) {
- case *abstract.UnprovisonedPortError:
- fmt.Printf("DeleteOnt failed as it should with %v\n", err)
- default:
- t.Fatalf("DeleteOnt test failed with %v\n", err)
- }
- } else {
- t.Fatalf("DeleteOnt should have failed but didn't")
- }
- fmt.Printf("DeletenOnt success %v\n", ret)
-}