MCPcopy Create free account
hub / github.com/canonical/cloud-init / _get_data

Method _get_data

cloudinit/sources/DataSourceGCE.py:88–143  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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

Calls 4

EphemeralDHCPv4Class · 0.90
get_url_paramsMethod · 0.80
read_mdFunction · 0.70
getMethod · 0.45