blob: 683489e6a807ed34734fc84eb2bc04f5828f3de9 [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
donNewtonAlphae7ab5b92018-09-27 15:09:14 -040030 Parent *SimpleOLT `json:"-"`
Author Namea594e632018-08-10 11:33:58 -040031}
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
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040073
74 if port.Onts[number-1].Active {
75 e := AllReadyActiveError{ontNumber: number, slotNum: slot.Number, ponportNum: port.Number, clli: chassis.CLLI}
76 return &e
77 }
donNewtonAlpha1d2d6812018-09-14 16:00:02 -040078 ont := Ont{Number: number, Svlan: sVlan, Cvlan: cVlan, SerialNumber: serialNumber, Parent: port, NasPortID: nasPortID, CircuitID: circuitID}
donNewtonAlpha5234b132018-08-16 14:12:28 -040079 port.Onts[number-1] = ont
80 port.Parent.Parent.provisionONT(ont)
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040081 port.Onts[number-1].Active = true
82 return nil
donNewtonAlpha5234b132018-08-16 14:12:28 -040083
84}
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040085
86/*
87DeleteOnt - passes ont information to chassis to make call to NEM to de-activate (de-whitelist) ont
88*/
89func (port *PONPort) DeleteOnt(number int, sVlan int, cVlan int, serialNumber string) error {
90 slot := port.Parent
91 chassis := slot.Parent
donNewtonAlphaf7cc9992018-08-29 14:23:02 -040092 if port.Onts[number-1].Active != true {
93 e := AllReadyDeactivatedError{ontNumber: number, slotNum: slot.Number, ponportNum: port.Number, clli: chassis.CLLI}
94 return &e
95 }
96 ont := Ont{Number: number, Svlan: sVlan, Cvlan: cVlan, SerialNumber: serialNumber, Parent: port}
97 chassis.deleteONT(ont)
98 port.Onts[number-1].Active = false
99
100 return nil
101}