(self)
| 147 | return endpoint.split("/")[-1] |
| 148 | |
| 149 | def get_members_endpoints(self) -> Dict[str, str]: |
| 150 | members: Dict[str, str] = {} |
| 151 | self.log.debug( |
| 152 | f"get_members_endpoints called on {self.url}, has_members={self.has_members}" |
| 153 | ) |
| 154 | |
| 155 | if self.has_members: |
| 156 | url_parts = self.url.split("/redfish/v1/") |
| 157 | if len(url_parts) > 1: |
| 158 | base_path = "/redfish/v1/" + url_parts[1].split("/")[0] |
| 159 | else: |
| 160 | base_path = None |
| 161 | |
| 162 | for member in self.data["Members"]: |
| 163 | name = self.get_name(member["@odata.id"]) |
| 164 | endpoint_url = member["@odata.id"] |
| 165 | self.log.debug(f"Found member: {name} -> {endpoint_url}") |
| 166 | |
| 167 | if base_path and not endpoint_url.startswith(base_path): |
| 168 | self.log.warning( |
| 169 | f"Member endpoint {endpoint_url} does not match base path {base_path} " |
| 170 | f"from {self.url}. Skipping this member." |
| 171 | ) |
| 172 | continue |
| 173 | |
| 174 | members[name] = endpoint_url |
| 175 | else: |
| 176 | if self.data: |
| 177 | name = self.get_name(self.url) |
| 178 | members[name] = self.url |
| 179 | self.log.warning( |
| 180 | f"No Members array, using endpoint itself: {name} -> {self.url}" |
| 181 | ) |
| 182 | else: |
| 183 | self.log.debug(f"Endpoint {self.url} has no data and no Members array") |
| 184 | |
| 185 | return members |
| 186 | |
| 187 | def get_members_data(self) -> Dict[str, Any]: |
| 188 | result: Dict[str, Any] = {} |
no test coverage detected