cleaning stuff up
Change-Id: Ib7e91c6e92b6f6b3c93f4d8ca5dcbfcf74f6c671
diff --git a/api/abstract_olt_api.proto b/api/abstract_olt_api.proto
index 86f9a72..12c8941 100644
--- a/api/abstract_olt_api.proto
+++ b/api/abstract_olt_api.proto
@@ -21,14 +21,8 @@
string VCoreIP =2;
int32 VCorePort=3;
}
-message Error {
- int32 ErrorNum = 1;
- string ErrorMessage=2;
- int32 Serverity=3;
-}
message AddChassisReturn{
string DeviceID = 1;
- Error error = 2;
}
message AddOLTChassisMessage{
string CLLI=1;
@@ -55,14 +49,13 @@
message AddOLTChassisReturn {
string DeviceID =1;
string ChassisDeviceID =2;
- Error error = 3;
}
message ActivateSlotMessage{
- string SlotDeviceID = 1;
+ string CLLI =1;
+ int32 SlotNumber = 2;
}
message ActivateSlotReturn{
bool Success = 1;
- Error error = 2;
}
message AddOntMessage{
string CLLI=1;
@@ -73,7 +66,6 @@
}
message AddOntReturn{
bool Success=1;
- Error error = 2;
}
service AbstractOLT{
diff --git a/api/handler_test.go b/api/handler_test.go
index 50c5355..c319e6d 100644
--- a/api/handler_test.go
+++ b/api/handler_test.go
@@ -22,6 +22,7 @@
"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"
)
@@ -40,7 +41,6 @@
t.Fatalf("CreateChassis failed %v\n", err)
}
clli = ret.DeviceID
-
}
func TestHandler_CreateOLTChassis(t *testing.T) {
fmt.Println("in handlerTest_CreateChassis")
@@ -51,6 +51,30 @@
t.Fatalf("CreateOLTChassis failed %v\n", err)
}
fmt.Printf("CreateOLTChassis success %v\n", ret)
+}
+func TestHandler_EnableSlot(t *testing.T) {
+ ctx = context.Background()
+ server = api.Server{}
+ fmt.Println("in handler_test_EnableSlot")
+ // slot number 1 should be provisioned above
+ message := &api.ActivateSlotMessage{CLLI: clli, SlotNumber: 1}
+ ret, err := server.EnableSlot(ctx, message)
+ if err != nil {
+ t.Fatalf("EnableSlot failed with %v\n", err)
+ }
+ fmt.Printf("EnableSlot succeeded with %v\n", ret)
+ // Slot 2 isn't provisioned and should fail
+ message = &api.ActivateSlotMessage{CLLI: clli, SlotNumber: 2}
+ ret, err = server.EnableSlot(ctx, message)
+ if err != nil {
+ switch err.(type) {
+ case *physical.UnprovisionedSlotError:
+ fmt.Printf("EnableSlot failed as it should with %v\n", err)
+ default:
+ t.Fatalf("EnableSlot failed with %v\n", err)
+ }
+ t.Fatalf("EnableSlot should have failed but didn't")
+ }
}
func TestHandler_ProvisionOnt(t *testing.T) {
@@ -65,6 +89,7 @@
}
// this one should fail
fmt.Println("here")
+ //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 {
@@ -78,5 +103,4 @@
t.Fatalf("ProvsionOnt should have failed but didn't")
}
fmt.Printf("ProvisionOnt success %v\n", ret)
-
}
diff --git a/models/abstract/chassis.go b/models/abstract/chassis.go
index 74a288c..65bd228 100644
--- a/models/abstract/chassis.go
+++ b/models/abstract/chassis.go
@@ -59,6 +59,6 @@
return nextPort, nil
}
func (chassis *Chassis) ActivateONT(slotNumber int, portNumber int, ontNumber int, serialNumber string) error {
- err := chassis.Slots[slotNumber-1].Ports[portNumber].provisionOnt(ontNumber, serialNumber)
+ err := chassis.Slots[slotNumber-1].Ports[portNumber-1].provisionOnt(ontNumber, serialNumber)
return err
}
diff --git a/models/physical/chassis.go b/models/physical/chassis.go
index 3f050aa..8f60838 100644
--- a/models/physical/chassis.go
+++ b/models/physical/chassis.go
@@ -30,6 +30,14 @@
Dataswitch DataSwitch
Linecards []OLT
}
+type UnprovisionedSlotError struct {
+ CLLI string
+ SlotNumber int
+}
+
+func (e *UnprovisionedSlotError) Error() string {
+ return fmt.Sprintf("SlotNumber %d in Chassis %s is currently unprovsioned", e.SlotNumber, e.CLLI)
+}
/*
AddOLTChassis - adds a reference to a new olt chassis
@@ -43,3 +51,10 @@
//TODO - api call to provison s/c vlans and ont serial number etc
fmt.Printf("chassis.provisionONT(%s,SVlan:%d,CVlan:%d)\n", ont.SerialNumber, ont.Svlan, ont.Cvlan)
}
+func (chassis *Chassis) ActivateSlot(slotNumber int) error {
+ // AT&T backend systems start at 1 and not 0 :P
+ if chassis.Linecards[slotNumber-1] == nil {
+ return &UnprovisionedSlotError{CLLI: chassis.CLLI, SlotNumber: slotNumber}
+ }
+ return chassis.Linecards[slotNumber-1].activate()
+}
diff --git a/models/physical/olt.go b/models/physical/olt.go
index beffec8..121fdac 100644
--- a/models/physical/olt.go
+++ b/models/physical/olt.go
@@ -29,6 +29,7 @@
GetPorts() []PONPort
GetParent() *Chassis
GetDataSwitchPort() int
+ activate() error
}
/*
@@ -73,3 +74,8 @@
func (s *SimpleOLT) GetDataSwitchPort() int {
return s.DataSwitchPort
}
+func (s *SimpleOLT) activate() error {
+ s.Active = true
+ //TODO make call to XOS to activate phyiscal OLT
+ return nil
+}