def get_resource_total(self, resource_name: str) -> float: if self._excluded_pods_by_ip: logger.info( f'Excluded {self.get_resource_excluded(resource_name)} {resource_name} from daemonset pods' ) return sum( getattr( total_node_resources( node, self._excluded_pods_by_ip.get(node_ip, [])), resource_name) for node_ip, node in self._nodes_by_ip.items())
def _get_agent_metadata(self, node_ip: str) -> AgentMetadata: node = self._nodes_by_ip.get(node_ip) if not node: return AgentMetadata(state=AgentState.ORPHANED) return AgentMetadata( agent_id=node.metadata.name, allocated_resources=allocated_node_resources( self._pods_by_ip[node_ip]), batch_task_count=self._count_batch_tasks(node_ip), state=(AgentState.RUNNING if self._pods_by_ip[node_ip] else AgentState.IDLE), task_count=len(self._pods_by_ip[node_ip]), total_resources=total_node_resources(node), )
def _get_pod_unschedulable_reason( self, pod: KubernetesPod) -> PodUnschedulableReason: pod_resource_request = total_pod_resources(pod) for node_ip, pods_on_node in self._pods_by_ip.items(): node = self._nodes_by_ip.get(node_ip) if node: available_node_resources = ( total_node_resources( node, self._excluded_pods_by_ip.get(node_ip, [])) - allocated_node_resources(pods_on_node)) if pod_resource_request < available_node_resources: return PodUnschedulableReason.Unknown return PodUnschedulableReason.InsufficientResources
def get_resource_total(self, resource_name: str) -> float: return sum( getattr(total_node_resources(node), resource_name) for node in self._nodes_by_ip.values())