示例#1
0
    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
示例#2
0
    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