Example #1
0
    def get_stats_internal(self, report_name, num_sets, start_time, end_time,
                    subclass=None):

        start_time = time_to_local_time(start_time)
        end_time = time_to_local_time(end_time)

        bns = [('time_lb', 'datetime_sec', start_time),
               ('time_ub', 'datetime_sec', end_time)]

        if subclass is not None:
            bns.append(('subclass', 'uint32', subclass))

        code, msg, bindings = Mgmt.action(
            '/stats/actions/generate_report/%s' % report_name,
            *bns
            )

        if code != 0:
            raise ServiceError, msg

        # save off the file name so we can remove it in self.onReturn()
        results = bindings['results']

        res = bulk_stats.bsp_to_data_val_sets(results, num_sets)

        return res
Example #2
0
    def schedule_tcpdump(self, interfaces, filename, duration, date_and_time,
                         max_size):
        """
        schedule_tcpdump(auth, interfaces, filename, duration, date_and_time,
                         max_size) -> None

        Schedule a TCP dump to run at a later time.

        Parameters:
        interfaces (string): comma-separated list of interfaces or 'all'
        filename (string): id string added to the boilerplate TCP dump name
        duration (int): maximum number of seconds that the capture will run or
                        0 to run until stop_tcpdump is called
        date_and_time (datetime): date and time to start the TCP dump
        max_size (int): maximum size, in megabytes, of capture file.  Settimg
                        this to 0 causes the system default size to be used.

        Exceptions:
        schedule_tcpdumpFault - Invalid capture name
        schedule_tcpdumpFault - Invalid interfaces
        schedule_tcpdumpFault - Capture name too long
        schedule_tcpdumpFault - Duplicate interface name
        schedule_tcpdumpFault - No valid interfaces provided
        schedule_tcpdumpFault - Invalid file name (same as invalid capture name)
        schedule_tcpdumpFault - Invalid date or time
        """
        if filename.find('..') != -1:
            raise ServiceError("filename %s must not contain '..'" % filename)

        action_params = []

        if interfaces == 'all':
            action_params.append(('all_interfaces', 'bool', 'true'))
        else:
            for iface in interfaces.split(','):
                action_params.append(('interface', 'string', iface))

        action_params.append(('cap_name', 'string', filename))
        action_params.append(('duration', 'duration_sec', duration))
        action_params.append(('file_size', 'uint32', max_size))

        date_and_time = time_to_local_time(date_and_time)
        dump_date, dump_time = date_and_time.split()

        action_params.append(('sched_time', 'time_sec', dump_time))
        action_params.append(('sched_date', 'date', dump_date))

        code, msg, bindings = Mgmt.action('/rbt/tcpdump/action/start',
                                          action_params)

        if code != 0:
            raise ServiceError, msg