blob: ca321fdb0463b40a3b252a0bfea10a9a0dddd3bf [file] [log] [blame]
Author Namea594e632018-08-10 11:33:58 -04001/*
2 Copyright 2017 the original author or authors.
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15*/
16
17package physical
18
donNewtonAlpha1d2d6812018-09-14 16:00:02 -040019import (
20 "fmt"
21)
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040022
Author Namea594e632018-08-10 11:33:58 -040023/*
donNewtonAlpha5234b132018-08-16 14:12:28 -040024PONPort represents a single PON port on the OLT chassis
Author Namea594e632018-08-10 11:33:58 -040025*/
26type PONPort struct {
27 Number int
28 DeviceID string
29 Onts [64]Ont
30 Parent *Edgecore `json:"-"`
31}
donNewtonAlpha5234b132018-08-16 14:12:28 -040032
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040033/*
34AllReadyActiveError - thrown when an attempt to activate a ONT which is already activated
35*/
36type AllReadyActiveError struct {
37 slotNum int
38 clli string
39 ponportNum int
40 ontNumber int
41}
42
43/*
44Error - the interface method that must be implemented on error
45*/
46func (e *AllReadyActiveError) Error() string {
47 return fmt.Sprintf("Attempt to Activate ONT %d on PONPort %d Slot %d on %s but already active", e.ontNumber, e.ponportNum, e.slotNum, e.clli)
48}
49
50/*
51AllReadyDeactivatedError - thrown when an attempt to activate a ONT which is already activated
52*/
53type AllReadyDeactivatedError struct {
54 slotNum int
55 clli string
56 ponportNum int
57 ontNumber int
58}
59
60/*
61Error - the interface method that must be implemented on error
62*/
63func (e *AllReadyDeactivatedError) Error() string {
64 return fmt.Sprintf("Attempt to De-Activate ONT %d on PONPort %d Slot %d on %s but not active", e.ontNumber, e.ponportNum, e.slotNum, e.clli)
65}
66
67/*
68ActivateOnt - passes ont information to chassis to make call to NEM to activate (whitelist) ont
69*/
donNewtonAlpha1d2d6812018-09-14 16:00:02 -040070func (port *PONPort) ActivateOnt(number int, sVlan int, cVlan int, serialNumber string, nasPortID string, circuitID string) error {
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040071 slot := port.Parent
72 chassis := slot.Parent
73 fmt.Printf("Calling ActivateOnt and port state is %t\n", port.Onts[number-1].Active)
74
75 if port.Onts[number-1].Active {
76 e := AllReadyActiveError{ontNumber: number, slotNum: slot.Number, ponportNum: port.Number, clli: chassis.CLLI}
77 return &e
78 }
donNewtonAlpha1d2d6812018-09-14 16:00:02 -040079 ont := Ont{Number: number, Svlan: sVlan, Cvlan: cVlan, SerialNumber: serialNumber, Parent: port, NasPortID: nasPortID, CircuitID: circuitID}
donNewtonAlpha5234b132018-08-16 14:12:28 -040080 port.Onts[number-1] = ont
81 port.Parent.Parent.provisionONT(ont)
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040082 port.Onts[number-1].Active = true
83 return nil
donNewtonAlpha5234b132018-08-16 14:12:28 -040084
85}
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040086
87/*
88DeleteOnt - passes ont information to chassis to make call to NEM to de-activate (de-whitelist) ont
89*/
90func (port *PONPort) DeleteOnt(number int, sVlan int, cVlan int, serialNumber string) error {
91 slot := port.Parent
92 chassis := slot.Parent
93 fmt.Printf("Calling ActivateOnt and port state is %t\n", port.Onts[number-1].Active)
94 if port.Onts[number-1].Active != true {
95 e := AllReadyDeactivatedError{ontNumber: number, slotNum: slot.Number, ponportNum: port.Number, clli: chassis.CLLI}
96 return &e
97 }
98 ont := Ont{Number: number, Svlan: sVlan, Cvlan: cVlan, SerialNumber: serialNumber, Parent: port}
99 chassis.deleteONT(ont)
100 port.Onts[number-1].Active = false
101
102 return nil
103}