Exemple #1
0
    def heartbeat(self, uuid, advertise_address, advertise_protocol='http'):
        path = self.heartbeat_api.format(uuid=uuid)

        data = {
            'callback_url':
            self._get_agent_url(advertise_address, advertise_protocol)
        }

        api_ver = self._get_ironic_api_version()

        if api_ver >= AGENT_TOKEN_IRONIC_VERSION:
            data['agent_token'] = self.agent_token

        if api_ver >= AGENT_VERSION_IRONIC_VERSION:
            data['agent_version'] = version.version_info.release_string()

        api_ver = min(MAX_KNOWN_VERSION, api_ver)
        headers = self._get_ironic_api_version_header(api_ver)

        try:
            response = self._request('POST', path, data=data, headers=headers)
        except requests.exceptions.ConnectionError as e:
            raise errors.HeartbeatConnectionError(str(e))
        except Exception as e:
            raise errors.HeartbeatError(str(e))

        if response.status_code == requests.codes.CONFLICT:
            data = jsonutils.loads(response.content)
            raise errors.HeartbeatConflictError(data.get('faultstring'))
        elif response.status_code != requests.codes.ACCEPTED:
            msg = 'Invalid status code: {}'.format(response.status_code)
            raise errors.HeartbeatError(msg)
Exemple #2
0
    def heartbeat(self, uuid, advertise_address):
        agent_url = self._get_agent_url(advertise_address)
        try:
            response = self._heartbeat_request(uuid, agent_url)
        except Exception as e:
            raise errors.HeartbeatError(str(e))

        if response.status_code == requests.codes.CONFLICT:
            data = json.loads(response.content)
            raise errors.HeartbeatConflictError(data.get('faultstring'))
        elif response.status_code != requests.codes.ACCEPTED:
            msg = 'Invalid status code: {0}'.format(response.status_code)
            raise errors.HeartbeatError(msg)
    def heartbeat(self, uuid, advertise_address):
        path = '/{api_version}/nodes/{uuid}/vendor_passthru/heartbeat'.format(
            api_version=self.api_version, uuid=uuid)
        data = {'agent_url': self._get_agent_url(advertise_address)}
        try:
            response = self._request('POST', path, data=data)
        except Exception as e:
            raise errors.HeartbeatError(str(e))

        if response.status_code == requests.codes.CONFLICT:
            data = json.loads(response.content)
            raise errors.HeartbeatConflictError(data.get('faultstring'))
        elif response.status_code != requests.codes.ACCEPTED:
            msg = 'Invalid status code: {0}'.format(response.status_code)
            raise errors.HeartbeatError(msg)
Exemple #4
0
    def heartbeat(self, uuid, advertise_address):
        path = self.heartbeat_api.format(uuid=uuid)
        data = {'callback_url': self._get_agent_url(advertise_address)}
        try:
            response = self._request('POST', path, data=data,
                                     headers=self.ramdisk_api_headers)
        except Exception as e:
            raise errors.HeartbeatError(str(e))

        if response.status_code == requests.codes.CONFLICT:
            data = jsonutils.loads(response.content)
            raise errors.HeartbeatConflictError(data.get('faultstring'))
        elif response.status_code != requests.codes.ACCEPTED:
            msg = 'Invalid status code: {}'.format(response.status_code)
            raise errors.HeartbeatError(msg)
Exemple #5
0
    def heartbeat(self,
                  uuid,
                  advertise_address,
                  advertise_protocol='http',
                  generated_cert=None):
        path = self.heartbeat_api.format(uuid=uuid)

        data = {
            'callback_url':
            self._get_agent_url(advertise_address, advertise_protocol)
        }

        api_ver = self._get_ironic_api_version()

        if api_ver >= AGENT_TOKEN_IRONIC_VERSION:
            data['agent_token'] = self.agent_token

        if api_ver >= AGENT_VERSION_IRONIC_VERSION:
            data['agent_version'] = version.__version__

        if api_ver >= AGENT_VERIFY_CA_IRONIC_VERSION and generated_cert:
            data['agent_verify_ca'] = generated_cert

        api_ver = min(MAX_KNOWN_VERSION, api_ver)
        headers = self._get_ironic_api_version_header(api_ver)

        LOG.debug(
            'Heartbeat: announcing callback URL %s, API version is '
            '%d.%d', data['callback_url'], *api_ver)
        try:
            response = self._request('POST', path, data=data, headers=headers)
        except requests.exceptions.ConnectionError as e:
            raise errors.HeartbeatConnectionError(str(e))
        except Exception as e:
            raise errors.HeartbeatError(str(e))

        if response.status_code == requests.codes.CONFLICT:
            error = self._error_from_response(response)
            raise errors.HeartbeatConflictError(error)
        elif response.status_code != requests.codes.ACCEPTED:
            error = self._error_from_response(response)
            raise errors.HeartbeatError(error)
Exemple #6
0
    def heartbeat(self, uuid, advertise_address):
        path = self.heartbeat_api.format(uuid=uuid)

        data = {'callback_url': self._get_agent_url(advertise_address)}

        if self._get_ironic_api_version() >= AGENT_VERSION_IRONIC_VERSION:
            data['agent_version'] = version.version_info.release_string()
            headers = self._get_ironic_api_version_header(
                AGENT_VERSION_IRONIC_VERSION)
        else:
            headers = self._get_ironic_api_version_header()

        try:
            response = self._request('POST', path, data=data, headers=headers)
        except Exception as e:
            raise errors.HeartbeatError(str(e))

        if response.status_code == requests.codes.CONFLICT:
            data = jsonutils.loads(response.content)
            raise errors.HeartbeatConflictError(data.get('faultstring'))
        elif response.status_code != requests.codes.ACCEPTED:
            msg = 'Invalid status code: {}'.format(response.status_code)
            raise errors.HeartbeatError(msg)