11d205726a90c7893e46a739718fce72815ea444
[osm/osmclient.git] / osmclient / sol005 / vnf.py
1 # Copyright 2018 Telefonica
2 #
3 # All Rights Reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License"); you may
6 # not use this file except in compliance with the License. You may obtain
7 # a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 # License for the specific language governing permissions and limitations
15 # under the License.
16
17 """
18 OSM vnf API handling
19 """
20
21 from osmclient.common import utils
22 from osmclient.common.exceptions import NotFound
23
24
25 class Vnf(object):
26
27 def __init__(self, http=None, client=None):
28 self._http = http
29 self._client = client
30 self._apiName = '/nslcm'
31 self._apiVersion = '/v1'
32 self._apiResource = '/vnfrs'
33 self._apiBase = '{}{}{}'.format(self._apiName,
34 self._apiVersion, self._apiResource)
35
36 def list(self, ns=None):
37 """Returns a list of VNF instances
38 """
39 filter_string = ''
40 if ns:
41 ns_instance = self._client.ns.get(ns)
42 filter_string = '?nsr-id-ref={}'.format(ns_instance['_id'])
43 resp = self._http.get_cmd('{}{}'.format(self._apiBase,filter_string))
44 #print 'RESP: {}'.format(resp)
45 if resp:
46 return resp
47 return list()
48
49 def get(self, name):
50 """Returns a VNF instance based on name or id
51 """
52 if utils.validate_uuid4(name):
53 for vnf in self.list():
54 if name == vnf['_id']:
55 return vnf
56 else:
57 for vnf in self.list():
58 if name == vnf['name']:
59 return vnf
60 raise NotFound("vnf {} not found".format(name))
61
62 def get_individual(self, name):
63 vnf_id = name
64 if not utils.validate_uuid4(name):
65 for vnf in self.list():
66 if name == vnf['name']:
67 vnf_id = vnf['_id']
68 break
69 resp = self._http.get_cmd('{}/{}'.format(self._apiBase, vnf_id))
70 #print 'RESP: {}'.format(resp)
71 if resp:
72 return resp
73 raise NotFound("vnf {} not found".format(name))
74