vnf-list and vnf-show for sol005 client
[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 if resp:
45 return resp
46 return list()
47
48 def get(self, name):
49 """Returns a VNF instance based on name or id
50 """
51 if utils.validate_uuid4(name):
52 for vnf in self.list():
53 if vnf == vnf['_id']:
54 return vnf
55 else:
56 for vnf in self.list():
57 if name == vnf['name']:
58 return vnf
59 raise NotFound("vnf {} not found".format(name))
60
61 def get_individual(self, name):
62 vnf_id = name
63 if not utils.validate_uuid4(name):
64 for vnf in self.list():
65 if name == vnf['name']:
66 vnf_id = vnf['_id']
67 break
68 resp = self._http.get_cmd('{}/{}'.format(self._apiBase, vnf_id))
69 if resp:
70 return resp
71 raise NotFound("vnf {} not found".format(name))
72