Zum Inhalt
HALOWERK

Finopswerk

pod split cost attribution

From one original hourly host cost, raw capacities and reserved/used pod resources, reconstruct max allocation, oversubscription-normalized CPU/memory shares, split/idle costs and namespace totals. CPU:memory weights 9:1; resource quanta are milli-vCPU and milli-GB. Missing usage falls back to reservation; missing host cost or undefined zero-demand idle allocation stays unknown while known errors remain negative. Exact rational specialization, no AWS export-bit, real telemetry/billing or.

POST https://finops.halowerk.com/v1/pod-split-cost-attribution

Eingaben

Felder des veröffentlichten Eingabeschemas
FeldTypPflichtBeschreibung
host_cost_minorSiehe SchemaJa
capacity_cpuintegerJa
capacity_memoryintegerJa
podsarrayJa
reportobjectJa
Vollständiges Eingabeschema anzeigen
{
  "type": "object",
  "properties": {
    "host_cost_minor": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 1000000
        },
        {
          "type": "null"
        }
      ]
    },
    "capacity_cpu": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "capacity_memory": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20000
    },
    "pods": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,15}$",
            "minLength": 1,
            "maxLength": 16
          },
          "namespace": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,15}$",
            "minLength": 1,
            "maxLength": 16
          },
          "reserved_cpu": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20000
          },
          "used_cpu": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 20000
              },
              {
                "type": "null"
              }
            ]
          },
          "reserved_memory": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20000
          },
          "used_memory": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 20000
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "namespace",
          "reserved_cpu",
          "used_cpu",
          "reserved_memory",
          "used_memory"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 4
    },
    "report": {
      "type": "object",
      "properties": {
        "pods": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "allocated_cpu": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 20000
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "allocated_memory": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 20000
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "cpu_ratio": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "string",
                        "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                        "maxLength": 41
                      },
                      "d": {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{0,39}$",
                        "maxLength": 40
                      }
                    },
                    "required": [
                      "n",
                      "d"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "memory_ratio": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "string",
                        "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                        "maxLength": 41
                      },
                      "d": {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{0,39}$",
                        "maxLength": 40
                      }
                    },
                    "required": [
                      "n",
                      "d"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "split_cost": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "string",
                        "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                        "maxLength": 41
                      },
                      "d": {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{0,39}$",
                        "maxLength": 40
                      }
                    },
                    "required": [
                      "n",
                      "d"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "idle_cost": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "string",
                        "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                        "maxLength": 41
                      },
                      "d": {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{0,39}$",
                        "maxLength": 40
                      }
                    },
                    "required": [
                      "n",
                      "d"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "total_cost": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "string",
                        "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                        "maxLength": 41
                      },
                      "d": {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{0,39}$",
                        "maxLength": 40
                      }
                    },
                    "required": [
                      "n",
                      "d"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "allocated_cpu",
              "allocated_memory",
              "cpu_ratio",
              "memory_ratio",
              "split_cost",
              "idle_cost",
              "total_cost"
            ],
            "additionalProperties": false
          },
          "minItems": 1,
          "maxItems": 4
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "namespace": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_]{0,15}$",
                "minLength": 1,
                "maxLength": 16
              },
              "total_cost": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "string",
                        "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                        "maxLength": 41
                      },
                      "d": {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{0,39}$",
                        "maxLength": 40
                      }
                    },
                    "required": [
                      "n",
                      "d"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "namespace",
              "total_cost"
            ],
            "additionalProperties": false
          },
          "minItems": 1,
          "maxItems": 4
        },
        "cpu_idle_cost": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "n": {
                  "type": "string",
                  "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                  "maxLength": 41
                },
                "d": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,39}$",
                  "maxLength": 40
                }
              },
              "required": [
                "n",
                "d"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "memory_idle_cost": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "n": {
                  "type": "string",
                  "pattern": "^-?(0|[1-9][0-9]{0,39})$",
                  "maxLength": 41
                },
                "d": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,39}$",
                  "maxLength": 40
                }
              },
              "required": [
                "n",
                "d"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "pods",
        "namespaces",
        "cpu_idle_cost",
        "memory_idle_cost"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "host_cost_minor",
    "capacity_cpu",
    "capacity_memory",
    "pods",
    "report"
  ],
  "additionalProperties": false
}

Originalschema öffnen

Veröffentlichtes Eingabebeispiel

{
  "host_cost_minor": 100,
  "capacity_cpu": 4000,
  "capacity_memory": 16000,
  "pods": [
    {
      "id": "a",
      "namespace": "one",
      "reserved_cpu": 1000,
      "used_cpu": 100,
      "reserved_memory": 4000,
      "used_memory": 3000
    },
    {
      "id": "b",
      "namespace": "two",
      "reserved_cpu": 1000,
      "used_cpu": 1900,
      "reserved_memory": 4000,
      "used_memory": 6000
    },
    {
      "id": "c",
      "namespace": "one",
      "reserved_cpu": 1000,
      "used_cpu": 500,
      "reserved_memory": 2000,
      "used_memory": 2000
    }
  ],
  "report": {
    "pods": [
      {
        "allocated_cpu": 1000,
        "allocated_memory": 4000,
        "cpu_ratio": {
          "n": "1",
          "d": "4"
        },
        "memory_ratio": {
          "n": "1",
          "d": "4"
        },
        "split_cost": {
          "n": "25",
          "d": "1"
        },
        "idle_cost": {
          "n": "1525",
          "d": "507"
        },
        "total_cost": {
          "n": "14200",
          "d": "507"
        }
      },
      {
        "allocated_cpu": 1900,
        "allocated_memory": 6000,
        "cpu_ratio": {
          "n": "19",
          "d": "40"
        },
        "memory_ratio": {
          "n": "3",
          "d": "8"
        },
        "split_cost": {
          "n": "1155",
          "d": "26"
        },
        "idle_cost": {
          "n": "1585",
          "d": "338"
        },
        "total_cost": {
          "n": "8300",
          "d": "169"
        }
      },
      {
        "allocated_cpu": 1000,
        "allocated_memory": 2000,
        "cpu_ratio": {
          "n": "1",
          "d": "4"
        },
        "memory_ratio": {
          "n": "1",
          "d": "8"
        },
        "split_cost": {
          "n": "275",
          "d": "13"
        },
        "idle_cost": {
          "n": "875",
          "d": "507"
        },
        "total_cost": {
          "n": "11600",
          "d": "507"
        }
      }
    ],
    "namespaces": [
      {
        "namespace": "one",
        "total_cost": {
          "n": "8600",
          "d": "169"
        }
      },
      {
        "namespace": "two",
        "total_cost": {
          "n": "8300",
          "d": "169"
        }
      }
    ],
    "cpu_idle_cost": {
      "n": "45",
      "d": "26"
    },
    "memory_idle_cost": {
      "n": "100",
      "d": "13"
    }
  }
}

Ergebnis & Dokumentation

Maschinenlesbare Dokumentation dieses Hubs

Quelle dieser Seite: der veröffentlichte HALOWERK-Katalog. Stand: 2026-11-07, 02:42 UTC.

Weitere Endpunkte dieses Hubs

Alle Endpunkte dieses Hubs →