def crawl_metadata(self): """Crawl metadata service when available. @returns: Dictionary of crawled metadata content containing the keys: meta-data, user-data and dynamic. """ if not self.wait_for_metadata_service(): return {} api_version = self.get_metadata_api_version() crawled_metadata = {} try: crawled_metadata['user-data'] = ec2.get_instance_userdata( api_version, self.metadata_address) crawled_metadata['meta-data'] = ec2.get_instance_metadata( api_version, self.metadata_address) if self.cloud_name == CloudNames.AWS: identity = ec2.get_instance_identity( api_version, self.metadata_address) crawled_metadata['dynamic'] = {'instance-identity': identity} except Exception: util.logexc( LOG, "Failed reading from metadata address %s", self.metadata_address) return {} crawled_metadata['_metadata_api_version'] = api_version return crawled_metadata
def get_instance_id(self): if self.cloud_platform == Platforms.AWS: # Prefer the ID from the instance identity document, but fall back if not getattr(self, 'identity', None): # If re-using cached datasource, it's get_data run didn't # setup self.identity. So we need to do that now. api_version = self.get_metadata_api_version() self.identity = ec2.get_instance_identity( api_version, self.metadata_address).get('document', {}) return self.identity.get( 'instanceId', self.metadata['instance-id']) else: return self.metadata['instance-id']
def get_instance_id(self): if self.cloud_name == CloudNames.AWS: # Prefer the ID from the instance identity document, but fall back if not getattr(self, 'identity', None): # If re-using cached datasource, it's get_data run didn't # setup self.identity. So we need to do that now. api_version = self.get_metadata_api_version() self.identity = ec2.get_instance_identity( api_version, self.metadata_address).get('document', {}) return self.identity.get( 'instanceId', self.metadata['instance-id']) else: return self.metadata['instance-id']
def crawl_metadata(self): """Crawl metadata service when available. @returns: Dictionary of crawled metadata content containing the keys: meta-data, user-data and dynamic. """ if not self.wait_for_metadata_service(): return {} api_version = self.get_metadata_api_version() redact = AWS_TOKEN_REDACT crawled_metadata = {} if self.cloud_name == CloudNames.AWS: exc_cb = self._refresh_stale_aws_token_cb exc_cb_ud = self._skip_or_refresh_stale_aws_token_cb else: exc_cb = exc_cb_ud = None try: crawled_metadata["user-data"] = ec2.get_instance_userdata( api_version, self.metadata_address, headers_cb=self._get_headers, headers_redact=redact, exception_cb=exc_cb_ud, ) crawled_metadata["meta-data"] = ec2.get_instance_metadata( api_version, self.metadata_address, headers_cb=self._get_headers, headers_redact=redact, exception_cb=exc_cb, ) if self.cloud_name == CloudNames.AWS: identity = ec2.get_instance_identity( api_version, self.metadata_address, headers_cb=self._get_headers, headers_redact=redact, exception_cb=exc_cb, ) crawled_metadata["dynamic"] = {"instance-identity": identity} except Exception: util.logexc( LOG, "Failed reading from metadata address %s", self.metadata_address, ) return {} crawled_metadata["_metadata_api_version"] = api_version return crawled_metadata
def get_instance_id(self): if self.cloud_name == CloudNames.AWS: # Prefer the ID from the instance identity document, but fall back if not getattr(self, 'identity', None): # If re-using cached datasource, it's get_data run didn't # setup self.identity. So we need to do that now. api_version = self.get_metadata_api_version() self.identity = ec2.get_instance_identity( api_version, self.metadata_address, headers_cb=self._get_headers, headers_redact=AWS_TOKEN_REDACT, exception_cb=self._refresh_stale_aws_token_cb).get( 'document', {}) return self.identity.get( 'instanceId', self.metadata['instance-id']) else: return self.metadata['instance-id']
def _crawl_metadata(self): """Crawl metadata service when available. @returns: True on success, False otherwise. """ if not self.wait_for_metadata_service(): return False api_version = self.get_metadata_api_version() try: self.userdata_raw = ec2.get_instance_userdata( api_version, self.metadata_address) self.metadata = ec2.get_instance_metadata(api_version, self.metadata_address) if self.cloud_platform == Platforms.AWS: self.identity = ec2.get_instance_identity( api_version, self.metadata_address).get('document', {}) except Exception: util.logexc(LOG, "Failed reading from metadata address %s", self.metadata_address) return False return True