SEBA-122
bin/client is now cmdline app, tosca is sent to xos
Change-Id: I7bbf59569b5c96062aa1c7681708a4cf39532ae2
diff --git a/models/physical/chassis.go b/models/physical/chassis.go
index 705de80..4e0c4da 100644
--- a/models/physical/chassis.go
+++ b/models/physical/chassis.go
@@ -19,6 +19,10 @@
import (
"fmt"
"net"
+ "net/http"
+ "strings"
+
+ "gerrit.opencord.org/abstract-olt/models/tosca"
)
/*
@@ -29,6 +33,8 @@
VCoreAddress net.TCPAddr
Dataswitch DataSwitch
Linecards []OLT
+ Rack int
+ Shelf int
}
type UnprovisionedSlotError struct {
CLLI string
@@ -46,10 +52,59 @@
chassis.Linecards = append(chassis.Linecards, olt)
//TODO - api call to add olt i.e. preprovision_olt
fmt.Printf("chassis.AddOLTChassis(%s)\n", olt.GetHostname())
+ //S>103 func NewOltProvision(name string, deviceType string, host string, port int) OltProvsion {
+ ipString := olt.GetAddress().IP.String()
+ webServerPort := olt.GetAddress().Port
+ oltStruct := tosca.NewOltProvision(chassis.CLLI, olt.GetHostname(), "openolt", ipString, webServerPort)
+ yaml, _ := oltStruct.ToYaml()
+ fmt.Printf("yaml:%s\n", yaml)
+ client := &http.Client{}
+ requestList := fmt.Sprintf("http://%s:%d/run", chassis.VCoreAddress.IP.String(), chassis.VCoreAddress.Port)
+ req, err := http.NewRequest("POST", requestList, strings.NewReader(yaml))
+ req.Header.Add("xos-username", "admin@opencord.org")
+ req.Header.Add("xos-password", "letmein")
+ resp, err := client.Do(req)
+ if err != nil {
+ fmt.Printf("ERROR :) %v\n", err)
+ // handle error
+ }
+ fmt.Printf("Response is %v\n", resp)
+
}
func (chassis *Chassis) provisionONT(ont Ont) {
//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)
+ ponPort := ont.Parent
+ slot := ponPort.Parent
+
+ //func NewOntProvision(serialNumber string, oltIP net.IP, ponPortNumber int) OntProvision {
+ ontStruct := tosca.NewOntProvision(ont.SerialNumber, slot.Address.IP, ponPort.Number)
+ yaml, _ := ontStruct.ToYaml()
+
+ fmt.Printf("yaml:%s\n", yaml)
+ client := &http.Client{}
+ requestList := fmt.Sprintf("http://%s:%d/run", chassis.VCoreAddress.IP.String(), chassis.VCoreAddress.Port)
+ req, err := http.NewRequest("POST", requestList, strings.NewReader(yaml))
+ req.Header.Add("xos-username", "admin@opencord.org")
+ req.Header.Add("xos-password", "letmein")
+ resp, err := client.Do(req)
+ if err != nil {
+ fmt.Printf("ERROR :) %v\n", err)
+ // handle error
+ }
+ fmt.Printf("Response is %v\n", resp)
+ rgName := fmt.Sprintf("%s_%d_%d_%d_RG", chassis.CLLI, slot.Number, ponPort.Number, ont.Number)
+ subStruct := tosca.NewSubscriberProvision(rgName, ont.Cvlan, ont.Svlan, ont.SerialNumber, ont.NasPortID, ont.CircuitID, chassis.CLLI)
+ yaml, _ = subStruct.ToYaml()
+ fmt.Printf("yaml:%s\n", yaml)
+ req, err = http.NewRequest("POST", requestList, strings.NewReader(yaml))
+ req.Header.Add("xos-username", "admin@opencord.org")
+ req.Header.Add("xos-password", "letmein")
+ resp, err = client.Do(req)
+ if err != nil {
+ fmt.Printf("ERROR :) %v\n", err)
+ // handle error
+ }
}
func (chassis *Chassis) deleteONT(ont Ont) {
//TODO - api call to provison s/c vlans and ont serial number etc
diff --git a/models/physical/ont.go b/models/physical/ont.go
index 3e5e659..79c21ee 100644
--- a/models/physical/ont.go
+++ b/models/physical/ont.go
@@ -26,4 +26,6 @@
SerialNumber string
Parent *PONPort `json:"-"`
Active bool
+ NasPortID string
+ CircuitID string
}
diff --git a/models/physical/ponport.go b/models/physical/ponport.go
index 15b7328..ca321fd 100644
--- a/models/physical/ponport.go
+++ b/models/physical/ponport.go
@@ -16,7 +16,9 @@
package physical
-import "fmt"
+import (
+ "fmt"
+)
/*
PONPort represents a single PON port on the OLT chassis
@@ -65,7 +67,7 @@
/*
ActivateOnt - passes ont information to chassis to make call to NEM to activate (whitelist) ont
*/
-func (port *PONPort) ActivateOnt(number int, sVlan int, cVlan int, serialNumber string) error {
+func (port *PONPort) ActivateOnt(number int, sVlan int, cVlan int, serialNumber string, nasPortID string, circuitID string) error {
slot := port.Parent
chassis := slot.Parent
fmt.Printf("Calling ActivateOnt and port state is %t\n", port.Onts[number-1].Active)
@@ -74,7 +76,7 @@
e := AllReadyActiveError{ontNumber: number, slotNum: slot.Number, ponportNum: port.Number, clli: chassis.CLLI}
return &e
}
- ont := Ont{Number: number, Svlan: sVlan, Cvlan: cVlan, SerialNumber: serialNumber, Parent: port}
+ ont := Ont{Number: number, Svlan: sVlan, Cvlan: cVlan, SerialNumber: serialNumber, Parent: port, NasPortID: nasPortID, CircuitID: circuitID}
port.Onts[number-1] = ont
port.Parent.Parent.provisionONT(ont)
port.Onts[number-1].Active = true