Merge "Add test_findMultivimDriver_no_version"
[multicloud/framework.git] / multivimbroker / multivimbroker / pub / msapi / extsys.py
1 # Copyright (c) 2017 Wind River Systems, Inc.
2 # Copyright (c) 2017-2018 VMware, 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 #       http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
13 import json
14 import logging
15
16 from multivimbroker.pub.exceptions import VimBrokerException
17 from multivimbroker.pub.utils import restcall
18
19 logger = logging.getLogger(__name__)
20
21
22 def split_vim_to_owner_region(vim_id):
23     split_vim = vim_id.split('_')
24     cloud_owner = split_vim[0]
25     cloud_region = "".join(split_vim[1:])
26     return cloud_owner, cloud_region
27
28
29 def get_vim_by_id(vim_id):
30     cloud_owner, cloud_region = split_vim_to_owner_region(vim_id)
31     ret = restcall.get_res_from_aai("/cloud-infrastructure/cloud-regions/"
32                                     "cloud-region/%s/%s" % (
33                                         cloud_owner, cloud_region))
34     if ret[0] != 0:
35         logger.error("Status code is %s, detail is %s." % (ret[2], ret[1]))
36         raise VimBrokerException(
37             status_code=404,
38             content="Failed to query VIM with id (%s) from extsys." % vim_id)
39     ret = json.JSONDecoder().decode(ret[1])
40     ret['type'] = ret['cloud-type']
41     ret['version'] = ret['cloud-region-version']
42     ret['vimId'] = vim_id
43     return ret