コード例 #1
0
    def _software_inventory(self):
        # actual software
        _software_before = self.pms.query_all()
        logging.debug('Actual software: %s', _software_before)

        # if have been installed packages manually
        # information is uploaded to server
        if os.path.isfile(settings.SOFTWARE_FILE) \
        and os.stat(settings.SOFTWARE_FILE).st_size:
            _diff_software = utils.compare_lists(
                open(settings.SOFTWARE_FILE,
                     'U').read().splitlines(),  # not readlines!!!
                _software_before)

            if _diff_software:
                self._send_message(_('Uploading manual software...'))
                _file_mtime = time.strftime(
                    '%Y-%m-%d %H:%M:%S',
                    time.localtime(os.path.getmtime(settings.SOFTWARE_FILE)))
                _now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
                _data = '# [%s, %s]\n%s' % (_file_mtime, _now,
                                            '\n'.join(_diff_software))
                logging.debug('Software diff: %s', _data)
                self._url_request.run('upload_computer_software_history',
                                      data=_data)
                _operation_ok()

        return _software_before
コード例 #2
0
def test_collect_spool():
    c = ZVMCollector("zhcpos2", "user", "password", "example.com", 443)
    # HTTP mocker that sends response in place of xCAT
    httpretty.register_uri(httpretty.PUT,
                           "http://example.com:443/xcatws/nodes/zhcpos2/dsh",
                           body=request_callback,
                           content_type='text/plain')

    metrics = c.collect_spool()

    # Make sure it returns the same number of metrics as the size of
    # metrics_list
    assert len(metrics) == 2
    assert compare_lists(metrics.keys(), ["allocated_total", "used_total"])
    # Check that all metrics have the right type
    for metric in metrics:
        assert type(metrics[metric]['value']) == GaugeMetricFamily
コード例 #3
0
ファイル: test_collector.py プロジェクト: yrhee/zvm_exporter
def test_collect_disk():
    c = ZVMCollector("zhcpos2", "user", "password", "example.com", 443)
    # HTTP mocker that sends response in place of xCAT
    httpretty.register_uri(
        httpretty.PUT, "http://example.com:443/xcatws/nodes/zhcpos2/dsh",
        body=request_callback, content_type='text/plain')

    metrics = c.collect_disk()

    # Make sure it returns the same number of metrics as the size of
    # metrics_list
    assert len(metrics) == 3
    assert compare_lists(metrics.keys(),
                         ["status", "space_total", "space_free"])
    # Check that all metrics have the right type
    for metric in metrics:
        assert type(metrics[metric]['value']) == GaugeMetricFamily
コード例 #4
0
ファイル: client.py プロジェクト: jpueyob/migasfree-client
    def _software_inventory(self):
        # actual software
        _software_before = self.pms.query_all()
        logging.debug('Actual software: %s', _software_before)

        # if have been installed packages manually
        # information is uploaded to server
        if os.path.isfile(settings.SOFTWARE_FILE) \
        and os.stat(settings.SOFTWARE_FILE).st_size:
            _diff_software = utils.compare_lists(
                open(
                    settings.SOFTWARE_FILE,
                    'U'
                ).read().splitlines(),  # not readlines!!!
                _software_before
            )

            if _diff_software:
                self._send_message(_('Uploading manual software...'))
                _file_mtime = time.strftime(
                    '%Y-%m-%d %H:%M:%S',
                    time.localtime(os.path.getmtime(settings.SOFTWARE_FILE))
                )
                _now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
                _data = '# [%s, %s]\n%s' % (
                    _file_mtime,
                    _now,
                    '\n'.join(_diff_software)
                )
                logging.debug('Software diff: %s', _data)
                self._url_request.run(
                    'upload_computer_software_history',
                    data=_data
                )
                _operation_ok()

        return _software_before
コード例 #5
0
ファイル: client.py プロジェクト: jpueyob/migasfree-client
    def _update_system(self):
        self._check_sign_keys()

        if self._send_message(
            _('Connecting to migasfree server...'),
            mandatory=True
        ):
            _operation_ok()
        else:
            sys.exit(errno.EBADRQC)

        self._upload_old_errors()

        _response = self._get_attributes()

        # send response to server and evaluate new request
        self._send_message(_('Uploading attributes...'))
        _request = self._url_request.run(
            'upload_computer_info',
            data=_response
        )
        _operation_ok()
        logging.debug('Server response: %s', _request)

        if len(_request['faultsdef']) > 0:
            _response = self._eval_faults(_request['faultsdef'])
            logging.debug('Faults to send: %s', _response)

            # send faults to server
            self._send_message(_('Uploading faults...'))
            _request_faults = self._url_request.run(
                'upload_computer_faults',
                data=_response
            )
            _operation_ok()
            logging.debug('Server response: %s', _request_faults)

        _software_before = self._software_inventory()

        self._create_repositories(_request['repositories'])

        self._clean_pms_cache()

        # first remove packages
        self._uninstall_packages(_request['packages']['remove'])

        # then install new packages
        self._install_mandatory_packages(_request['packages']['install'])

        # finally update packages
        self._update_packages()

        # upload computer software history
        _software_after = self.pms.query_all()
        utils.write_file(settings.SOFTWARE_FILE, '\n'.join(_software_after))
        _diff_software = utils.compare_lists(_software_before, _software_after)
        if _diff_software:
            self._send_message(_('Uploading software history...'))
            _data = time.strftime('# %Y-%m-%d %H:%M:%S\n', time.localtime()) \
                + '\n'.join(_diff_software)
            logging.debug('Software diff: %s', _data)
            print(_('Software diff: %s') % _data)
            self._url_request.run(
                'upload_computer_software_history',
                data=_data
            )
            _operation_ok()

        # upload the software inventory
        self._send_message(_('Uploading software inventory...'))
        if _request['base']:
            logging.info('This computer is software reference')
            self._url_request.run(
                'upload_computer_software_base',
                data='\n'.join(_software_after)
            )
            _operation_ok()

        _software_base = self._url_request.run('get_computer_software')
        _software_base = _software_base.split('\n')
        logging.debug('Software base: %s', _software_base)

        _diff_software = utils.compare_lists(_software_base, _software_after)
        _diff_software = '\n'.join(_diff_software)
        logging.debug('Software base diff: %s', _diff_software)
        self._url_request.run(
            'upload_computer_software_base_diff',
            data=_diff_software
        )
        _operation_ok()

        # update computer hardware inventory
        if _request.get('hardware_capture') is True:  # new in server 3.0
            self._update_hardware_inventory()

        # TODO remove and install devices

        # upload execution errors to server
        self._upload_execution_errors()

        self._send_message(
            _('Completed operations'),
            self.ICON_COMPLETED,
            mandatory=True
        )
        time.sleep(3)  # to see update completed icon ;)

        # clean computer messages in server
        self._send_message()
コード例 #6
0
    def _update_system(self):
        self._check_sign_keys()

        if self._send_message(_('Connecting to migasfree server...'),
                              mandatory=True):
            _operation_ok()
        else:
            sys.exit(errno.EBADRQC)

        self._upload_old_errors()

        _response = self._get_attributes()

        # send response to server and evaluate new request
        self._send_message(_('Uploading attributes...'))
        _request = self._url_request.run('upload_computer_info',
                                         data=_response)
        _operation_ok()
        logging.debug('Server response: %s', _request)

        if len(_request['faultsdef']) > 0:
            _response = self._eval_faults(_request['faultsdef'])
            logging.debug('Faults to send: %s', _response)

            # send faults to server
            self._send_message(_('Uploading faults...'))
            _request_faults = self._url_request.run('upload_computer_faults',
                                                    data=_response)
            _operation_ok()
            logging.debug('Server response: %s', _request_faults)

        _software_before = self._software_inventory()

        self._create_repositories(_request['repositories'])

        self._clean_pms_cache()

        # first remove packages
        self._uninstall_packages(_request['packages']['remove'])

        # then install new packages
        self._install_mandatory_packages(_request['packages']['install'])

        # finally update packages
        self._update_packages()

        # upload computer software history
        _software_after = self.pms.query_all()
        utils.write_file(settings.SOFTWARE_FILE, '\n'.join(_software_after))
        _diff_software = utils.compare_lists(_software_before, _software_after)
        if _diff_software:
            self._send_message(_('Uploading software history...'))
            _data = time.strftime('# %Y-%m-%d %H:%M:%S\n', time.localtime()) \
                + '\n'.join(_diff_software)
            logging.debug('Software diff: %s', _data)
            print(_('Software diff: %s') % _data)
            self._url_request.run('upload_computer_software_history',
                                  data=_data)
            _operation_ok()

        # upload the software inventory
        self._send_message(_('Uploading software inventory...'))
        if _request['base']:
            logging.info('This computer is software reference')
            self._url_request.run('upload_computer_software_base',
                                  data='\n'.join(_software_after))
            _operation_ok()

        _software_base = self._url_request.run('get_computer_software')
        _software_base = _software_base.split('\n')
        logging.debug('Software base: %s', _software_base)

        _diff_software = utils.compare_lists(_software_base, _software_after)
        _diff_software = '\n'.join(_diff_software)
        logging.debug('Software base diff: %s', _diff_software)
        self._url_request.run('upload_computer_software_base_diff',
                              data=_diff_software)
        _operation_ok()

        # update computer hardware inventory
        if _request.get('hardware_capture') is True:  # new in server 3.0
            self._update_hardware_inventory()

        # TODO remove and install devices

        # upload execution errors to server
        self._upload_execution_errors()

        self._send_message(_('Completed operations'),
                           self.ICON_COMPLETED,
                           mandatory=True)
        time.sleep(3)  # to see update completed icon ;)

        # clean computer messages in server
        self._send_message()