1 # -*- coding: utf-8 -*-
4 # Copyright 2016-2017 VMware Inc.
5 # This file is part of ETSI OSM
8 # Licensed under the Apache License, Version 2.0 (the "License"); you may
9 # not use this file except in compliance with the License. You may obtain
10 # a copy of the License at
12 # http://www.apache.org/licenses/LICENSE-2.0
14 # Unless required by applicable law or agreed to in writing, software
15 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17 # License for the specific language governing permissions and limitations
20 # For those usages not covered by the Apache License, Version 2.0 please
21 # contact: osslegalrouting@vmware.com
26 from osm_mon
.collector
.vnf_collectors
.base_vim
import BaseVimCollector
27 from osm_mon
.collector
.vnf_collectors
.vrops
.vrops_helper
import vROPS_Helper
28 from osm_mon
.core
.common_db
import CommonDbClient
29 from osm_mon
.core
.config
import Config
31 log
= logging
.getLogger(__name__
)
34 class VIOCollector(BaseVimCollector
):
35 def __init__(self
, config
: Config
, vim_account_id
: str):
36 super().__init
__(config
, vim_account_id
)
37 self
.common_db
= CommonDbClient(config
)
38 cfg
= self
.get_vim_account(vim_account_id
)
39 self
.vrops
= vROPS_Helper(vrops_site
=cfg
['vrops_site'],
40 vrops_user
=cfg
['vrops_user'],
41 vrops_password
=cfg
['vrops_password'])
43 def get_vim_account(self
, vim_account_id
: str):
44 vim_account_info
= self
.common_db
.get_vim_account(vim_account_id
)
45 return vim_account_info
['config']
47 def collect(self
, vnfr
: dict):
48 vnfd
= self
.common_db
.get_vnfd(vnfr
['vnfd-id'])
51 # Fetch the list of all known resources from vROPS.
52 resource_list
= self
.vrops
.get_vm_resource_list_from_vrops()
54 for vdur
in vnfr
['vdur']:
55 # This avoids errors when vdur records have not been completely filled
56 if 'name' not in vdur
:
60 filter(lambda vdu
: vdu
['id'] == vdur
['vdu-id-ref'], vnfd
['vdu'])
62 if 'monitoring-param' not in vdu
:
65 vim_id
= vdur
['vim-id']
66 vdu_mappings
[vim_id
] = {'name': vdur
['name']}
68 # Map the vROPS instance id to the vim-id so we can look it up.
69 for resource
in resource_list
:
70 for resourceIdentifier
in resource
['resourceKey']['resourceIdentifiers']:
71 if resourceIdentifier
['identifierType']['name'] == 'VMEntityInstanceUUID':
72 if resourceIdentifier
['value'] != vim_id
:
74 vdu_mappings
[vim_id
]['vrops_id'] = resource
['identifier']
76 if len(vdu_mappings
) != 0:
77 return self
.vrops
.get_metrics(vdu_mappings
=vdu_mappings
,
78 monitoring_params
=vdu
['monitoring-param'],