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
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
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
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
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()
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()