e11fe8bccbfbfb9602b85ee99e4e48a37dda7aed
[ccsdk/sli/adaptors.git] / netbox-client / provider / src / main / java / org / onap / ccsdk / sli / adaptors / netbox / api / NetboxClient.java
1 /*
2  * Copyright (C) 2018 Bell Canada.
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 package org.onap.ccsdk.sli.adaptors.netbox.api;
17
18 import java.sql.SQLException;
19 import org.onap.ccsdk.sli.adaptors.netbox.model.IPAddress;
20 import org.onap.ccsdk.sli.adaptors.netbox.model.Prefix;
21
22 /**
23  * This client is meant to interact both with the IPAM system, and the SDNC DB, in order to provide, at any time,
24  * an up to date status of the assigned resources.
25  */
26 public interface NetboxClient {
27
28     /**
29      * Assign next available IP in prefix and store it in the SDNC database, table IPAM_IP_ASSIGNEMENT.
30      *
31      * @param prefix The prefix from which to get next available IP.
32      * @param serviceInstanceId The service instance ID uniquely identifying the service.
33      * @param vfModuleId The VF module ID uniquely identifying the VF.
34      * @return The IPAddress
35      * @throws IpamException If something goes wrong while communicating with the IPAM system.
36      * @throws SQLException If something goes wrong while communicating with the SDNC DB.
37      */
38     IPAddress assign(Prefix prefix, String serviceInstanceId, String vfModuleId) throws IpamException, SQLException;
39
40     /**
41      * Release the IP and remove the entry in the SDNC database, table IPAM_IP_ASSIGNEMENT.
42      *
43      * @param ip The IP to release.
44      * @param serviceInstanceId The service instance ID uniquely identifying the service.
45      * @param vfModuleId The VF module ID uniquely identifying the VF.
46      * @throws IpamException If something goes wrong while communicating with the IPAM system.
47      * @throws SQLException If something goes wrong while communicating with the SDNC DB.
48      */
49     void unassign(IPAddress ip, String serviceInstanceId, String vfModuleId) throws IpamException, SQLException;
50 }
51