9875d39f71cc0a0432dc8c95495c5f46d0eb381f
[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, filter=None):
37 """Returns a list of VNF instances
38 """
39 filter_string = ''
40 if filter:
41 filter_string = '?{}'.format(filter)
42 if ns:
43 ns_instance = self._client.ns.get(ns)
44 if filter_string:
45 filter_string += ',nsr-id-ref={}'.format(ns_instance['_id'])
46 else:
47 filter_string = '?nsr-id-ref={}'.format(ns_instance['_id'])
48 resp = self._http.get_cmd('{}{}'.format(self._apiBase,filter_string))
49 #print 'RESP: {}'.format(resp)
50 if resp:
51 return resp
52 return list()
53
54 def get(self, name):
55 """Returns a VNF instance based on name or id
56 """
57 if utils.validate_uuid4(name):
58 for vnf in self.list():
59 if name == vnf['_id']:
60 return vnf
61 else:
62 for vnf in self.list():
63 if name == vnf['name']:
64 return vnf
65 raise NotFound("vnf {} not found".format(name))
66
67 def get_individual(self, name):
68 vnf_id = name
69 if not utils.validate_uuid4(name):
70 for vnf in self.list():
71 if name == vnf['name']:
72 vnf_id = vnf['_id']
73 break
74 resp = self._http.get_cmd('{}/{}'.format(self._apiBase, vnf_id))
75 #print 'RESP: {}'.format(resp)
76 if resp:
77 return resp
78 raise NotFound("vnf {} not found".format(name))
79