Exemplo n.º 1
0
    def start_nsdlink_metric(self, metric_group, nsdlink_id):
        # install the link metric
        title = metric_group['description']
        metric_type = metric_group['metric_type']
        metric_type2 = nsdlink_id['direction'] + "_" + metric_type
        source = nsdlink_id['source']
        destination = nsdlink_id['destination']
        direction = nsdlink_id['direction']

        if 'rx' in direction:
            vnf_name = parse_vnf_name(destination)
            vnf_interface = parse_vnf_interface(destination)
        elif 'tx' in direction:
            vnf_name = parse_vnf_name(source)
            vnf_interface = parse_vnf_interface(source)

        # make default description
        desc = nsdlink_id.get("description")
        if not desc:
            desc = nsdlink_id['link_id'] + ':' + nsdlink_id['direction']

        # if match is empty then it is a total interface counter
        if not nsdlink_id.get('match'):
            flow_metric = metric2flow_metric[metric_type2]
            # metrics of cadvisor al already exported by default
            if not '_cadv' in metric_type:
                if vnf_interface is None:
                    vnf_interface = ''
                r = self.vim.monitor_interface('start', vnf_name + ':' + vnf_interface, flow_metric)
                LOG.info('start link metric ret:{0}'.format(r))
            query = network2vnfquery[metric_type2].query_template.format(vnf_name, vnf_interface)
            unit = network2vnfquery[metric_type2].unit
            name = '{0}@{1}:{2}'.format(metric_type2, vnf_name, vnf_interface)
            metric = Metric(metric_name=name, desc=desc, query=query, metric_type=metric_type2, unit=unit)


        # if a match is given, install a flow specific counter
        else:
            flow_metric = metric2flow_metric[metric_type2]
            source = nsdlink_id['source']
            destination = nsdlink_id['destination']
            match = nsdlink_id['match']
            # install the flow and export the metric
            r = self.vim.flow_total('start', source, destination, flow_metric, self.cookie_counter, match=match,
                            bidirectional=False, priority=MONITOR_FLOW_PRIORITY)
            LOG.info('start link metric ret:{0}'.format(r))
            query = metric2flowquery[metric_type2].query_template.format(self.cookie_counter, vnf_name, vnf_interface)
            unit = network2vnfquery[metric_type2].unit
            name = '{0}@{1}:{2}:{3}'.format(metric_type2, vnf_name, vnf_interface, self.cookie_counter)
            metric = Metric(metric_name=name, desc=desc, query=query, metric_type=metric_type2, unit=unit)
            self.cookie_counter += 1

        return metric
Exemplo n.º 2
0
    def start_network_metric(self, metric_group, vnf_id):
        metric_type = metric_group['metric_type']
        metric_type2 = vnf_id['direction'] + "_" + metric_type
        vnf_name = parse_vnf_name(vnf_id['vnf'])
        vnf_interface = parse_vnf_interface(vnf_id['vnf'])

        # metrics of cadvisor are already exported by default
        if not '_cadv' in metric_type:
            flow_metric = metric2flow_metric[metric_type2]
            r = self.vim.monitor_interface(action='start',
                                           vnf_name=vnf_name + ':' +
                                           vnf_interface,
                                           metric=flow_metric)
            LOG.info('start metric ret:{0}'.format(r))
        query = network2vnfquery[metric_type2].query_template.format(
            vnf_name, vnf_interface)
        # make default description
        desc = vnf_id.get("description")
        if not desc:
            desc = vnf_id['vnf'] + ':' + vnf_id['direction']
        unit = network2vnfquery[metric_type2].unit
        name = '@'.join([metric_type2, vnf_id['vnf']])
        metric = Metric(metric_name=name,
                        desc=desc,
                        query=query,
                        metric_type=metric_type2,
                        unit=unit)
        return metric
Exemplo n.º 3
0
    def start_testvnf_metric(self, metric_group, vnf_id):
        # make default description
        desc = vnf_id.get("description")
        if not desc:
            desc = vnf_id['vnf']

        metric_type = metric_group['metric_type']
        # set correct Prometheus query
        query = test2vnfquery[metric_type].query_template.format(vnf_id['vnf'])
        unit = test2vnfquery[metric_type].unit
        name = '@'.join([metric_type, vnf_id['vnf']])
        metric = Metric(metric_name=name, desc=desc, query=query, metric_type=metric_type, unit=unit)
        return metric
Exemplo n.º 4
0
    def start_compute_metric(self, metric_group, vnf_id):
        # make default description
        desc = vnf_id.get("description")
        if not desc:
            desc = vnf_id['vnf']

        metric_type = metric_group['metric_type']
        # set correct Prometheus query
        vnf_name = vnf_id['vnf']
        query = compute2vnfquery[metric_type].query_template.format(vnf_name, name=vnf_name,
                                                                    id=self.vim.get_docker_id(vnf_name))
        unit = compute2vnfquery[metric_type].unit
        name = '@'.join([metric_type, vnf_id['vnf']])
        metric = Metric(metric_name=name, desc=desc, query=query, metric_type=metric_type, unit=unit)
        return metric