initial add
deleting bin/cert
adding license info
tweaking packages to match go standard conventions
updating to match tweaked package names
Change-Id: I78b395a778c0ceb649e2aa4491c81fd3dc28d0c0
diff --git a/api/handler.go b/api/handler.go
new file mode 100644
index 0000000..ec7ce86
--- /dev/null
+++ b/api/handler.go
@@ -0,0 +1,111 @@
+/*
+ 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
+
+import (
+ "fmt"
+ "log"
+ "net"
+ "strings"
+
+ "gerrit.opencord.org/abstract-olt/internal/pkg/settings"
+ "gerrit.opencord.org/abstract-olt/models"
+ "gerrit.opencord.org/abstract-olt/models/abstract"
+ "gerrit.opencord.org/abstract-olt/models/physical"
+ context "golang.org/x/net/context"
+)
+
+/*
+Server instance of the grpc server
+*/
+type Server struct {
+}
+
+/*
+CreateChassis - allocates a new Chassis struct and stores it in chassisMap
+*/
+func (s *Server) CreateChassis(ctx context.Context, in *AddChassisMessage) (*AddChassisReturn, error) {
+ phyChassisMap := models.GetPhyChassisMap()
+ absChassisMap := models.GetAbstractChassisMap()
+ clli := in.GetCLLI()
+
+ chassis := (*phyChassisMap)[clli]
+ if chassis != nil {
+ return &AddChassisReturn{DeviceID: chassis.CLLI}, nil
+ }
+ abstractChassis := abstract.GenerateChassis(clli)
+ phyChassis := physical.Chassis{CLLI: clli}
+ if settings.GetDebug() {
+ output := fmt.Sprintf("%v", abstractChassis)
+ formatted := strings.Replace(output, "{", "\n{", -1)
+ log.Printf("new chassis %s\n", formatted)
+ }
+ (*phyChassisMap)[clli] = &phyChassis
+ (*absChassisMap)[clli] = abstractChassis
+ return &AddChassisReturn{DeviceID: clli}, nil
+}
+
+/*
+AddOLTChassis adds an OLT chassis/line card to the Physical chassis
+*/
+func (s *Server) CreateOLTChassis(ctx context.Context, in *AddOLTChassisMessage) (*AddOLTChassisReturn, error) {
+ fmt.Printf(" CreateOLTChassis %v \n", *in)
+ phyChassisMap := models.GetPhyChassisMap()
+ clli := in.GetCLLI()
+ chassis := (*phyChassisMap)[clli]
+ if chassis == nil {
+ }
+ oltType := in.GetType()
+ address := net.TCPAddr{IP: net.ParseIP(in.GetSlotIP()), Port: int(in.GetSlotPort())}
+ sOlt := physical.SimpleOLT{CLLI: clli, Hostname: in.GetHostname(), Address: address}
+
+ var olt physical.OLT
+ switch oltType {
+ case AddOLTChassisMessage_edgecore:
+ olt = physical.CreateEdgecore(&sOlt)
+ case AddOLTChassisMessage_adtran:
+ case AddOLTChassisMessage_tibit:
+ }
+
+ err := AddCard(chassis, olt)
+ if err != nil {
+ //TODO do something
+ }
+
+ return &AddOLTChassisReturn{DeviceID: in.GetHostname(), ChassisDeviceID: clli}, nil
+
+}
+
+/*
+AddCard Adds an OLT card to an existing physical chassis, allocating ports
+in the physical card to those in the abstract model
+*/
+func AddCard(physChassis *physical.Chassis, olt physical.OLT) error {
+ physChassis.Linecards = append(physChassis.Linecards, olt)
+
+ ports := olt.GetPorts()
+ absChassis := (*models.GetAbstractChassisMap())[physChassis.CLLI]
+
+ for i := 0; i < len(ports); i++ {
+ absPort, _ := absChassis.NextPort()
+ absPort.PhysPort = &ports[i]
+ //AssignTraits(&ports[i], absPort)
+ }
+
+ //should probably worry about error at some point
+ return nil
+}