def __call__(self, req): if os.path.normpath(req.path_info) == "/": return(base.ec2_md_print(base.VERSIONS + ["latest"])) if CONF.service_neutron_metadata_proxy: meta_data = self._handle_instance_id_request(req) else: if req.headers.get('X-Instance-ID'): LOG.warn( _("X-Instance-ID present in request headers. The " "'service_neutron_metadata_proxy' option must be enabled" " to process this header.")) meta_data = self._handle_remote_ip_request(req) if meta_data is None: raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() if callable(data): return data(req, meta_data) return base.ec2_md_print(data)
def __call__(self, req): remote_address = req.remote_addr if CONF.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) if os.path.normpath("/" + req.path_info) == "/": return(base.ec2_md_print(base.VERSIONS + ["latest"])) try: meta_data = self.get_metadata(remote_address) except Exception: LOG.exception(_('Failed to get metadata for ip: %s'), remote_address) msg = _('An unknown error has occurred. ' 'Please try your request again.') exc = webob.exc.HTTPInternalServerError(explanation=unicode(msg)) return exc if meta_data is None: LOG.error(_('Failed to get metadata for ip: %s'), remote_address) raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() return base.ec2_md_print(data)
def __call__(self, req): if os.path.normpath(req.path_info) == "/": resp = base.ec2_md_print(base.VERSIONS + ["latest"]) req.response.body = resp req.response.content_type = base.MIME_TYPE_TEXT_PLAIN return req.response if CONF.neutron.service_metadata_proxy: meta_data = self._handle_instance_id_request(req) else: if req.headers.get('X-Instance-ID'): LOG.warn( _LW("X-Instance-ID present in request headers. The " "'service_metadata_proxy' option must be " "enabled to process this header.")) meta_data = self._handle_remote_ip_request(req) if meta_data is None: raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() if callable(data): return data(req, meta_data) resp = base.ec2_md_print(data) req.response.body = resp req.response.content_type = meta_data.get_mimetype() return req.response
def test_pubkey(self): md = fake_InstanceMetadata(self.stubs, self.instance.obj_clone()) pubkey_ent = md.lookup("/2009-04-04/meta-data/public-keys") self.assertEqual(base.ec2_md_print(pubkey_ent), "0=%s" % self.instance['key_name']) self.assertEqual(base.ec2_md_print(pubkey_ent['0']['openssh-key']), self.instance['key_data'])
def test_pubkey(self): md = fake_InstanceMetadata(self.stubs, copy(self.instance)) data = md.get_ec2_metadata(version='2009-04-04') pubkey_ent = data['meta-data']['public-keys'] self.assertEqual(base.ec2_md_print(pubkey_ent), "0=%s" % self.instance['key_name']) self.assertEqual(base.ec2_md_print(pubkey_ent['0']['openssh-key']), self.instance['key_data'])
def __call__(self, req): remote_address = req.remote_addr if req.method == 'PUT' and req.path_info == '/heartbeat': try: return base.update_vm_stat(req.params, remote_address) except exception.FixedIpNotFoundForAddress: msg = _('Instance fixed ip not fount with address %s') % \ remote_address raise webob.exc.HTTPNotFound(explanation=msg) except exception.NotFound: msg = _('Instance does not need heartbeat') raise webob.exc.HTTPNotFound(explanation=msg) except exception.NovaException: msg = _('Heartbeat store error') raise webob.exc.HTTPServerError(explanation=msg) if FLAGS.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) if os.path.normpath("/" + req.path_info) == "/": return(base.ec2_md_print(base.VERSIONS + ["latest"])) try: meta_data = self.get_metadata(remote_address) except Exception: LOG.exception(_('Failed to get metadata for ip: %s'), remote_address) msg = _('An unknown error has occurred. ' 'Please try your request again.') exc = webob.exc.HTTPInternalServerError(explanation=unicode(msg)) return exc if meta_data is None: LOG.error(_('Failed to get metadata for ip: %s'), remote_address) raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() return base.ec2_md_print(data)
def __call__(self, req): remote_address = req.remote_addr if req.method == 'PUT' and req.path_info == '/heartbeat': try: return base.update_vm_stat(req.params, remote_address) except exception.FixedIpNotFoundForAddress: msg = _('Instance fixed ip not fount with address %s') % \ remote_address raise webob.exc.HTTPNotFound(explanation=msg) except exception.NotFound: msg = _('Instance does not need heartbeat') raise webob.exc.HTTPNotFound(explanation=msg) except exception.NovaException: msg = _('Heartbeat store error') raise webob.exc.HTTPServerError(explanation=msg) if FLAGS.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) if os.path.normpath("/" + req.path_info) == "/": return (base.ec2_md_print(base.VERSIONS + ["latest"])) try: meta_data = self.get_metadata(remote_address) except Exception: LOG.exception(_('Failed to get metadata for ip: %s'), remote_address) msg = _('An unknown error has occurred. ' 'Please try your request again.') exc = webob.exc.HTTPInternalServerError(explanation=unicode(msg)) return exc if meta_data is None: LOG.error(_('Failed to get metadata for ip: %s'), remote_address) raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() return base.ec2_md_print(data)
def __call__(self, req): if os.path.normpath(req.path_info) == "/": resp = base.ec2_md_print(base.VERSIONS + ["latest"]) req.response.body = encodeutils.to_utf8(resp) req.response.content_type = base.MIME_TYPE_TEXT_PLAIN return req.response # Convert webob.headers.EnvironHeaders to a dict and mask any sensitive # details from the logs. if CONF.debug: headers = {k: req.headers[k] for k in req.headers} LOG.debug('Metadata request headers: %s', strutils.mask_dict_password(headers)) if CONF.neutron.service_metadata_proxy: if req.headers.get('X-Metadata-Provider'): meta_data = self._handle_instance_id_request_from_lb(req) else: meta_data = self._handle_instance_id_request(req) else: if req.headers.get('X-Instance-ID'): LOG.warning( "X-Instance-ID present in request headers. The " "'service_metadata_proxy' option must be " "enabled to process this header.") meta_data = self._handle_remote_ip_request(req) if meta_data is None: raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() if callable(data): return data(req, meta_data) resp = base.ec2_md_print(data) req.response.body = encodeutils.to_utf8(resp) req.response.content_type = meta_data.get_mimetype() return req.response
def __call__(self, req): if os.path.normpath(req.path_info) == "/": resp = base.ec2_md_print(base.VERSIONS + ["latest"]) req.response.body = resp req.response.content_type = base.MIME_TYPE_TEXT_PLAIN return req.response if CONF.neutron.service_metadata_proxy: if req.headers.get('X-Metadata-Provider'): meta_data = self._handle_instance_id_request_from_lb(req) else: meta_data = self._handle_instance_id_request(req) else: if req.headers.get('X-Instance-ID'): LOG.warning( _LW("X-Instance-ID present in request headers. The " "'service_metadata_proxy' option must be " "enabled to process this header.")) meta_data = self._handle_remote_ip_request(req) if meta_data is None: raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() if callable(data): return data(req, meta_data) resp = base.ec2_md_print(data) if isinstance(resp, six.text_type): req.response.text = resp else: req.response.body = resp req.response.content_type = meta_data.get_mimetype() return req.response
def __call__(self, req): remote_address = req.remote_addr if FLAGS.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) try: meta_data = self.get_metadata(remote_address) except Exception: LOG.exception(_('Failed to get metadata for ip: %s'), remote_address) msg = _('An unknown error has occurred. ' 'Please try your request again.') exc = webob.exc.HTTPInternalServerError(explanation=unicode(msg)) return exc if meta_data is None: LOG.error(_('Failed to get metadata for ip: %s'), remote_address) raise webob.exc.HTTPNotFound() try: data = meta_data.lookup(req.path_info) except base.InvalidMetadataPath: raise webob.exc.HTTPNotFound() return base.ec2_md_print(data)
def test_pubkey(self): md = fake_InstanceMetadata(self.stubs, copy(self.instance)) pubkey_ent = md.lookup("/2009-04-04/meta-data/public-keys") self.assertEqual(base.ec2_md_print(pubkey_ent), "0=%s" % self.instance["key_name"]) self.assertEqual(base.ec2_md_print(pubkey_ent["0"]["openssh-key"]), self.instance["key_data"])