コード例 #1
0
 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())
コード例 #2
0
 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),
     )
コード例 #3
0
    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
コード例 #4
0
 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())