| 86 | self.metadata_address = self.ds_cfg["metadata_url"] |
| 87 | |
| 88 | def _get_data(self): |
| 89 | url_params = self.get_url_params() |
| 90 | ret = {} |
| 91 | if self.perform_dhcp_setup: |
| 92 | candidate_nics = net.find_candidate_nics() |
| 93 | if DEFAULT_PRIMARY_INTERFACE in candidate_nics: |
| 94 | candidate_nics.remove(DEFAULT_PRIMARY_INTERFACE) |
| 95 | candidate_nics.insert(0, DEFAULT_PRIMARY_INTERFACE) |
| 96 | LOG.debug("Looking for the primary NIC in: %s", candidate_nics) |
| 97 | assert ( |
| 98 | len(candidate_nics) >= 1 |
| 99 | ), "The instance has to have at least one candidate NIC" |
| 100 | for candidate_nic in candidate_nics: |
| 101 | network_context = EphemeralDHCPv4( |
| 102 | self.distro, |
| 103 | iface=candidate_nic, |
| 104 | ) |
| 105 | try: |
| 106 | with network_context: |
| 107 | try: |
| 108 | ret = read_md( |
| 109 | address=self.metadata_address, |
| 110 | url_params=url_params, |
| 111 | ) |
| 112 | except Exception as e: |
| 113 | LOG.debug( |
| 114 | "Error fetching IMD with candidate NIC %s: %s", |
| 115 | candidate_nic, |
| 116 | e, |
| 117 | ) |
| 118 | continue |
| 119 | except NoDHCPLeaseError: |
| 120 | LOG.debug( |
| 121 | "Unable to obtain a DHCP lease for %s", candidate_nic |
| 122 | ) |
| 123 | continue |
| 124 | if ret["success"]: |
| 125 | self.distro.fallback_interface = candidate_nic |
| 126 | LOG.debug("Primary NIC found: %s.", candidate_nic) |
| 127 | break |
| 128 | if self.distro.fallback_interface is None: |
| 129 | LOG.warning( |
| 130 | "Did not find a fallback interface on %s.", self.cloud_name |
| 131 | ) |
| 132 | else: |
| 133 | ret = read_md(address=self.metadata_address, url_params=url_params) |
| 134 | |
| 135 | if not ret.get("success"): |
| 136 | if ret.get("platform_reports_gce"): |
| 137 | LOG.warning(ret.get("reason")) |
| 138 | else: |
| 139 | LOG.debug(ret.get("reason")) |
| 140 | return False |
| 141 | self.metadata = ret.get("meta-data") |
| 142 | self.userdata_raw = ret.get("user-data") |
| 143 | return True |
| 144 | |
| 145 | @property |