RIFT OSM R1 Initial Submission
[osm/SO.git] / rwlaunchpad / plugins / rwnsm / rift / tasklets / rwnsmtasklet / rwnsmplugin.py
1 #
2 # Copyright 2016 RIFT.IO Inc
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
17 import asyncio
18 import abc
19
20
21 class NsmPluginBase(object):
22 """
23 Abstract base class for the NSM plugin.
24 There will be single instance of this plugin for each plugin type.
25 """
26
27 def __init__(self, dts, log, loop, nsm, plugin_name, dts_publisher):
28 self._dts = dts
29 self._log = log
30 self._loop = loop
31 self._nsm = nsm
32 self._plugin_name = plugin_name
33 self._dts_publisher = dts_publisher
34
35 @property
36 def dts(self):
37 return self._dts
38
39 @property
40 def log(self):
41 return self._log
42
43 @property
44 def loop(self):
45 return self._loop
46
47 @property
48 def nsm(self):
49 return self._nsm
50
51 def create_nsr(self, nsr):
52 """ Create an NSR """
53 pass
54
55 @abc.abstractmethod
56 @asyncio.coroutine
57 def deploy(self, nsr_msg):
58 pass
59
60 @abc.abstractmethod
61 @asyncio.coroutine
62 def instantiate_ns(self, nsr, xact):
63 """ Instantiate the network service """
64 pass
65
66 @abc.abstractmethod
67 @asyncio.coroutine
68 def instantiate_vnf(self, nsr, vnfr):
69 """ Instantiate the virtual network function """
70 pass
71
72 @abc.abstractmethod
73 @asyncio.coroutine
74 def instantiate_vl(self, nsr, vl):
75 """ Instantiate the virtual link"""
76 pass
77
78 @abc.abstractmethod
79 @asyncio.coroutine
80 def get_nsr(self, nsr_path):
81 """ Get the NSR """
82 pass
83
84 @abc.abstractmethod
85 @asyncio.coroutine
86 def get_vnfr(self, vnfr_path):
87 """ Get the VNFR """
88 pass
89
90 @abc.abstractmethod
91 @asyncio.coroutine
92 def get_vlr(self, vlr_path):
93 """ Get the VLR """
94 pass
95
96 @abc.abstractmethod
97 @asyncio.coroutine
98 def terminate_ns(self, nsr):
99 """Terminate the network service """
100 pass
101
102 @abc.abstractmethod
103 @asyncio.coroutine
104 def terminate_vnf(self, vnfr):
105 """Terminate the VNF """
106 pass
107
108 @abc.abstractmethod
109 @asyncio.coroutine
110 def terminate_vl(self, vlr):
111 """Terminate the Virtual Link Record"""
112 pass