| 34 | self.sec_between_retries = sec_between_retries |
| 35 | |
| 36 | def get_value(self, path, is_text, is_recursive=False): |
| 37 | value = None |
| 38 | try: |
| 39 | url = self.metadata_address + path |
| 40 | if is_recursive: |
| 41 | url += "/?recursive=True" |
| 42 | resp = url_helper.readurl( |
| 43 | url=url, |
| 44 | headers=HEADERS, |
| 45 | retries=self.num_retries, |
| 46 | sec_between=self.sec_between_retries, |
| 47 | ) |
| 48 | except url_helper.UrlError as exc: |
| 49 | msg = "url %s raised exception %s" |
| 50 | LOG.debug(msg, path, exc) |
| 51 | else: |
| 52 | if resp.code == 200: |
| 53 | if is_text: |
| 54 | value = util.decode_binary(resp.contents) |
| 55 | else: |
| 56 | value = resp.contents.decode("utf-8") |
| 57 | else: |
| 58 | LOG.debug("url %s returned code %s", path, resp.code) |
| 59 | return value |
| 60 | |
| 61 | |
| 62 | class DataSourceGCE(sources.DataSource): |