def reregister_chef_node(self, data, nodename): ''' Re-registering computer ''' self.logger.debug('Re-Register computer (%s)...', nodename) if not self._check_credentials(data): return False if nodename is None or nodename.strip() == '': self.logger.warn('nodename is empty!') return False # Register in the Chef Node try: url = str(data.get_url()) if url.endswith('/'): url = url[0:-1] url = "{}/register/node/".format(url) self.logger.debug('Try to connect to: %s', url) user = data.get_login() password = data.get_password() payload = {'node_id': nodename} self.logger.debug('payload: %s', json.dumps(payload)) r = requests.put( url, auth=(user,password), verify=SSLUtil.isSSLCertificatesVerificationEnabled(), timeout=self.timeout, data=payload) if r.ok: self.logger.debug('Response: %s', url) response_json = False if hasattr(r,'text'): self.logger.debug('Response: %s', r.text) response_json = json.loads(r.text) else: self.logger.debug('Response: %s', r.content) response_json = json.loads(r.content) if response_json is None: self.logger.error( 'Error registering computer: NO RESPONSE') return False if not response_json["ok"]: self.logger.error( 'Error registering computer: %s', response_json['message']) return False return response_json["client_private_key"] self.logger.debug('Response: NOT OK') except Exception: self.logger.warn( 'Error connecting to Gecos server: %s', data.get_url()) self.logger.warn(str(traceback.format_exc())) return False
def unregister_computer(self, data, nodename): ''' Unregistering computer ''' self.logger.debug('Unregister computer...') if not self._check_credentials(data): return False if nodename is None or nodename.strip() == '': self.logger.warn('nodename is empty!') return False # Unregister the computer try: url = str(data.get_url()) if url.endswith('/'): url = url[0:-1] url = "{}/register/computer/?node_id={}".format(url, nodename) self.logger.debug('Try to connect to: %s', url) headers = { 'Content-type': 'application/json', 'Accept': 'text/plain' } user = data.get_login() password = data.get_password() r = requests.delete( url, auth=(user,password), headers=headers, verify=SSLUtil.isSSLCertificatesVerificationEnabled(), timeout=self.timeout) if r.ok: self.logger.debug('Response: %s', url) response_json = False if hasattr(r,'text'): self.logger.debug('Response: %s', r.text) response_json = json.loads(r.text) else: self.logger.debug('Response: %s', r.content) response_json = json.loads(r.content) if response_json is None: self.logger.error( 'Error unregistering computer: NO RESPONSE') return False if not response_json["ok"]: self.logger.error( 'Error unregistering computer: %s', response_json['message']) return False return True self.logger.debug('Response: NOT OK') except Exception: self.logger.warn( 'Error connecting to Gecos server: %s', data.get_url()) self.logger.warn(str(traceback.format_exc())) return False