seba-321 implemented reflow logic

Change-Id: I4a67a38104dbcb9bbfa830b38fc4fc21c42c2dbd
diff --git a/models/physical/chassis.go b/models/physical/chassis.go
index 8f76a5e..59c87b7 100644
--- a/models/physical/chassis.go
+++ b/models/physical/chassis.go
@@ -60,8 +60,14 @@
 func (chassis *Chassis) AddOLTChassis(olt SimpleOLT) {
 	olt.SetNumber((len(chassis.Linecards) + 1))
 	chassis.Linecards = append(chassis.Linecards, olt)
-	//TODO - api call to add olt i.e. preprovision_olt
-	//S>103 func NewOltProvision(name string, deviceType string, host string, port int) OltProvsion {
+	chassis.SendOltTosca(olt)
+
+}
+
+/*
+SendOltTosca - Broke above method apart to support Reflow
+*/
+func (chassis *Chassis) SendOltTosca(olt SimpleOLT) {
 	ipString := olt.GetAddress().IP.String()
 	webServerPort := olt.GetAddress().Port
 	oltStruct := tosca.NewOltProvision(chassis.CLLI, olt.GetHostname(), "openolt", ipString, webServerPort)
@@ -82,15 +88,16 @@
 		// handle error
 	}
 	log.Printf("Server response was %v\n", resp)
-
 }
 func (chassis *Chassis) provisionONT(ont Ont) {
 	//TODO - api call to provison s/c vlans and ont serial number etc
 	log.Printf("chassis.provisionONT(%s,SVlan:%d,CVlan:%d)\n", ont.SerialNumber, ont.Svlan, ont.Cvlan)
+	chassis.SendOntTosca(ont)
+	chassis.SendSubscriberTosca(ont)
+}
+func (chassis *Chassis) SendOntTosca(ont Ont) {
 	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()
 
@@ -110,22 +117,32 @@
 		// handle error
 	}
 	log.Printf("Response is %v\n", resp)
+}
+func (chassis *Chassis) SendSubscriberTosca(ont Ont) {
+	ponPort := ont.Parent
+	slot := ponPort.Parent
+	requestList := fmt.Sprintf("http://%s:%d/run", chassis.XOSAddress.IP.String(), chassis.XOSAddress.Port)
 	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()
-	log.Printf("yaml:%s\n", yaml)
-	req, err = http.NewRequest("POST", requestList, strings.NewReader(yaml))
-	req.Header.Add("xos-username", chassis.XOSUser)
-	req.Header.Add("xos-password", chassis.XOSPassword)
-	resp, err = client.Do(req)
-	if err != nil {
-		log.Printf("ERROR :) %v\n", err)
-		// handle error
+	yaml, _ := subStruct.ToYaml()
+	if settings.GetDummy() {
+		log.Printf("yaml:%s\n", yaml)
+		log.Println("YAML IS NOT BEING SET TO XOS")
+	} else {
+		req, err := http.NewRequest("POST", requestList, strings.NewReader(yaml))
+		req.Header.Add("xos-username", chassis.XOSUser)
+		req.Header.Add("xos-password", chassis.XOSPassword)
+		client := &http.Client{}
+		resp, err := client.Do(req)
+		if err != nil {
+			log.Printf("ERROR :) %v\n", err)
+			// handle error
+		}
+		log.Printf("Response is %v\n", resp)
+
 	}
 }
 func (chassis *Chassis) deleteONT(ont Ont) {
-	//TODO - api call to provison s/c vlans and ont serial number etc
-	//TODO - api call to provison s/c vlans and ont serial number etc
 	log.Printf("chassis.deleteONT(%s,SVlan:%d,CVlan:%d)\n", ont.SerialNumber, ont.Svlan, ont.Cvlan)
 	ponPort := ont.Parent
 	slot := ponPort.Parent