aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/config/NetworkConfigException.java
blob: 0c0dac864a06204fcbdc60d83b37dfcdb7e00508 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
/*
 * Copyright 2015 Open Networking Laboratory
 *
 * 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 org.onosproject.segmentrouting.config;

import org.onosproject.net.DeviceId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * NetworkConfigExceptions specifies a set of unchecked runtime exceptions that
 * can be thrown by the {@link NetworkConfigManager}. It indicates errors that
 * must be fixed in the config file before controller execution can proceed.
 */
public class NetworkConfigException extends RuntimeException {

    private static final long serialVersionUID = 4959684709803000652L;
    protected static final Logger log = LoggerFactory
            .getLogger(NetworkConfigException.class);

    /**
     * Exception for duplicate device identifier configuration.
     */
    public static class DuplicateDpid extends RuntimeException {
        private static final long serialVersionUID = 5491113234592145335L;

        public DuplicateDpid(DeviceId dpid) {
            super();
            log.error("Duplicate dpid found in switch-config Dpid:{}",
                    dpid);
        }
    }

    /**
     * Exception for duplicate device name configuration.
     */
    public static class DuplicateName extends RuntimeException {
        private static final long serialVersionUID = -4090171438031376129L;

        public DuplicateName(String name) {
            super();
            log.error("Duplicate name found in switch-config name:{}", name);
        }
    }

    /**
     * Exception for unspecified device identifier for a switch.
     */
    public static class DpidNotSpecified extends RuntimeException {
        private static final long serialVersionUID = -8494418855597117254L;

        public DpidNotSpecified(String name) {
            super();
            log.error("Dpid not specified for switch-config name:{}", name);
        }
    }

    /**
     * Exception for unspecified device name for a switch.
     */
    public static class NameNotSpecified extends RuntimeException {
        private static final long serialVersionUID = -3518881744110422891L;

        public NameNotSpecified(DeviceId dpid) {
            super();
            log.error("Name not specified for switch-config dpid:{}",
                    dpid);
        }
    }

    /**
     * Exception for unspecified device type for a switch.
     */
    public static class SwitchTypeNotSpecified extends RuntimeException {
        private static final long serialVersionUID = 2527453336226053753L;

        public SwitchTypeNotSpecified(DeviceId dpid) {
            super();
            log.error("Switch type not specified for switch-config dpid:{}",
                    dpid);
        }
    }

    /**
     * Exception for unknown device type configured for a switch.
     */
    public static class UnknownSwitchType extends RuntimeException {
        private static final long serialVersionUID = 7758418165512249170L;

        public UnknownSwitchType(String type, String name) {
            super();
            log.error("Unknown switch type {} for switch name:{}", type, name);
        }
    }

    /**
     * Exception for missing required parameter configuration for a switch.
     */
    public static class ParamsNotSpecified extends RuntimeException {
        private static final long serialVersionUID = 6247582323691265513L;

        public ParamsNotSpecified(String name) {
            super();
            log.error("Params required - not specified for switch:{}", name);
        }
    }

    /**
     * Reserved for future use.
     */
    public static class LinkTypeNotSpecified extends RuntimeException {
        private static final long serialVersionUID = -2089470389588542215L;

        public LinkTypeNotSpecified(String dpid1, String dpid2) {
            super();
            log.error("Link type not specified for link-config between "
                    + "dpid1:{} and dpid2:{}", dpid1, dpid2);
        }
    }

    /**
     * Reserved for future use.
     */
    public static class LinkDpidNotSpecified extends RuntimeException {
        private static final long serialVersionUID = -5701825916378616004L;

        public LinkDpidNotSpecified(String dpid1, String dpid2) {
            super();
            if (dpid1 == null) {
                log.error("nodeDpid1 not specified for link-config ");
            }
            if (dpid2 == null) {
                log.error("nodeDpid2 not specified for link-config ");
            }
        }
    }

    /**
     * Reserved for future use.
     */
    public static class LinkForUnknownSwitchConfig extends RuntimeException {
        private static final long serialVersionUID = -2910458439881964094L;

        public LinkForUnknownSwitchConfig(String dpid) {
            super();
            log.error("Link configuration was specified for a switch-dpid {} "
                    + "that has not been configured", dpid);
        }
    }

    /**
     * Reserved for future use.
     */
    public static class UnknownLinkType extends RuntimeException {
        private static final long serialVersionUID = -5505376193106542305L;

        public UnknownLinkType(String linktype, String dpid1, String dpid2) {
            super();
            log.error("unknown link type {} for links between dpid1:{} "
                    + "and dpid2:{}", linktype, dpid1, dpid2);
        }
    }

    /**
     * Exception for generic configuration errors.
     */
    public static class ErrorConfig extends RuntimeException {
        private static final long serialVersionUID = -2827406314700193147L;

        public ErrorConfig(String errorMsg) {
            super();
            log.error(errorMsg);
        }

    }

    /**
     * Reserved for future use.
     */
    public static class SwitchDpidNotConverted extends RuntimeException {
        private static final long serialVersionUID = 5640347104590170426L;

        public SwitchDpidNotConverted(String name) {
            super();
            log.error("Switch dpid specified as a HexString {} does not match "
                    + "with long value", name);
        }
    }

    /**
     * Reserved for future use.
     */
    public static class LinkDpidNotConverted extends RuntimeException {
        private static final long serialVersionUID = 2397245646094080774L;

        public LinkDpidNotConverted(String dpid1, String dpid2) {
            log.error("Dpids expressed as HexStrings for links between dpid1:{} "
                    + "and dpid2:{} do not match with long values", dpid1, dpid2);
        }
    }

}