SEBA-122
bin/client is now cmdline app, tosca is sent to xos
Change-Id: I7bbf59569b5c96062aa1c7681708a4cf39532ae2
diff --git a/models/abstract/ChassisUtils.go b/models/abstract/ChassisUtils.go
index 2377453..5e38890 100644
--- a/models/abstract/ChassisUtils.go
+++ b/models/abstract/ChassisUtils.go
@@ -19,8 +19,8 @@
/*
GenerateChassis - constructs a new AbstractOLT Chassis
*/
-func GenerateChassis(CLLI string) *Chassis {
- chassis := Chassis{CLLI: CLLI}
+func GenerateChassis(CLLI string, rack int, shelf int) *Chassis {
+ chassis := Chassis{CLLI: CLLI, Rack: rack, Shelf: shelf}
var slots [16]Slot
for i := 0; i < 16; i++ {
@@ -32,11 +32,11 @@
}
func generateSlot(n int, c *Chassis) Slot {
- slot := Slot{Number: n, Parent: c}
+ slot := Slot{Number: n + 3, Parent: c}
var ports [16]Port
for i := 0; i < 16; i++ {
- ports[i] = generatePort(i, &slot)
+ ports[i] = generatePort(i+1, &slot)
}
slot.Ports = ports
@@ -46,10 +46,11 @@
port := Port{Number: n, Parent: s}
var onts [64]Ont
- for i := 0; i < 64; i++ {
+ //i starts with 1 because :P Architects - blah
+ for i := 1; i < 65; i++ {
/* adding one because the system that provisions is 1 based on everything not 0 based*/
- onts[i] = Ont{Number: i, Svlan: calculateSvlan(s.Number+1, n+1, i+1),
- Cvlan: calculateCvlan(s.Number+1, n+1, i+1), Parent: &port}
+ onts[i-1] = Ont{Number: i, Svlan: calculateSvlan(s.Number, n, i),
+ Cvlan: calculateCvlan(s.Number, n, i+1), Parent: &port}
}
port.Onts = onts
@@ -61,8 +62,7 @@
ontSlotOffset := 12 //= Max(ONT_PORT) = 12
vlanOffset := 1 //(VID 1 is reserved)
- cVid := ((ont-1)%32)*ontPortOffset +
- (slot-1)*ontSlotOffset + port + vlanOffset
+ cVid := ((ont-2)%32)*ontPortOffset + (slot-3)*ontSlotOffset + port + vlanOffset
return cVid
}
@@ -71,8 +71,7 @@
ltSlotOffset := 16
vlanGap := 288 // Max(LT_SLOT) * Max(ltSlotOffset) = 18 * 16 = 288
vlanOffset := 1 //(VID 1 is reserved)
-
- sVid := ((slot-1)*ltSlotOffset + port) + ((ont-1)/32)*vlanGap + vlanOffset
+ sVid := ((slot-3)*ltSlotOffset + port) + ((ont-1)/32)*vlanGap + vlanOffset
return sVid
}
diff --git a/models/abstract/ChassisUtils_test.go b/models/abstract/ChassisUtils_test.go
index ecc5752..d6043f4 100644
--- a/models/abstract/ChassisUtils_test.go
+++ b/models/abstract/ChassisUtils_test.go
@@ -23,17 +23,16 @@
)
func TestChassisUtils_GenerateChassis(t *testing.T) {
- chassis := abstract.GenerateChassis("MY_CLLI")
+ chassis := abstract.GenerateChassis("MY_CLLI", 1, 1)
slot := chassis.Slots[6]
port := slot.Ports[0]
ont := port.Onts[3]
svlan := ont.Svlan
cvlan := ont.Cvlan
if svlan != 98 { // see map doc
- t.Fail()
+ t.Errorf("SVlan should be 98 and is %d\n", svlan)
}
if cvlan != 434 { // see map doc
- t.Fail()
+ t.Errorf("CVlan should be 434 and is %d\n", cvlan)
}
-
}
diff --git a/models/abstract/chassis.go b/models/abstract/chassis.go
index 687ecae..06e0002 100644
--- a/models/abstract/chassis.go
+++ b/models/abstract/chassis.go
@@ -16,7 +16,10 @@
package abstract
-import "errors"
+import (
+ "errors"
+ "fmt"
+)
const MAX_SLOTS int = 16
const MAX_PORTS int = 16
@@ -27,6 +30,8 @@
type Chassis struct {
CLLI string
Slots [16]Slot
+ Rack int
+ Shelf int
AllocInfo PortAllocationInfo
}
@@ -59,6 +64,7 @@
return nextPort, nil
}
func (chassis *Chassis) ActivateONT(slotNumber int, portNumber int, ontNumber int, serialNumber string) error {
+ fmt.Printf("chassis.ActivateONT(slot:%d,portNumber:%d,ontNumber:%d,serialNumber:%s\n", slotNumber, portNumber, ontNumber, serialNumber)
err := chassis.Slots[slotNumber-1].Ports[portNumber-1].provisionOnt(ontNumber, serialNumber)
return err
}
diff --git a/models/abstract/port.go b/models/abstract/port.go
index 2c2e07c..e626e7c 100644
--- a/models/abstract/port.go
+++ b/models/abstract/port.go
@@ -49,15 +49,22 @@
return fmt.Sprintf("Port %d for olt %d on AbstractChasis %s is not provisioned", e.portNum, e.oltNum, e.clli)
}
func (port *Port) provisionOnt(ontNumber int, serialNumber string) error {
+
+ fmt.Printf("My Number:%d abstract.port.provisionOnt(ontNumber:%d,serialNumber:%s\n", port.Number, ontNumber, serialNumber)
+ slot := port.Parent
+ chassis := *slot.Parent
+ baseID := fmt.Sprintf("%d/%d/%d/%d:%d.1.1", chassis.Rack, chassis.Shelf, slot.Number, port.Number, ontNumber)
+ nasPortID := fmt.Sprintf("PON %s", baseID)
+ circuitID := fmt.Sprintf("%s %s", chassis.CLLI, baseID)
+
if port.PhysPort == nil {
- slot := port.Parent
chassis := slot.Parent
err := UnprovisonedPortError{oltNum: slot.Number, clli: chassis.CLLI, portNum: port.Number}
return &err
}
phyPort := port.PhysPort
ont := port.Onts[ontNumber-1]
- err := phyPort.ActivateOnt(ontNumber, ont.Svlan, ont.Cvlan, serialNumber)
+ err := phyPort.ActivateOnt(ontNumber, ont.Svlan, ont.Cvlan, serialNumber, nasPortID, circuitID)
return err
}
func (port *Port) deleteOnt(ontNumber int, serialNumber string) error {