k8s resource.quantity json Marshall - PullRequest
       0

k8s resource.quantity json Marshall

0 голосов
/ 17 января 2020

Фон

Я создаю автомасштабирование k8s / v2beta1 HorizontalPodAutoscaler, используя следующее json:

{
  "kind": "HorizontalPodAutoscaler",
  "apiVersion": "autoscaling/v2beta1",
  ...
  "spec": {
    ...
    "metrics": [
      {
        "type": "Resource",
        "resource": {
          "targetAverageValue": 10000, //pay attention to this value
          "name": "cpu"
        }
      }
    ]
  }

, но когда я маршалл HorizontalPodAutoscaler я создал, я получаю следующий json:

{
  "kind": "HorizontalPodAutoscaler",
  "apiVersion": "autoscaling/v2beta1",
  ...
  "spec": {
    ...
    "metrics": [
      {
        "type": "Resource",
        "resource": {
          "targetAverageValue": "10k", // the value 10000 becomes "10k"
          "name": "cpu"
        }
      }
    ]
  }
}

Проблема в том, что Я хочу, чтобы .spec.metrics.resource.targetAverageValue сохранил свое первоначальное значение, а не был преобразован в представление с фиксированной точкой .

Текущая попытка

Проблема вызвана структурой resource.Quantity. .spec.metrics.resource.targetAverageValue имеет тип resource.Quantity, который имеет пользовательский json маршалл и анмаршалл c.

Я go через исходный код, но не могу найти метод, позволяющий resource.Quantity сохранять свое первоначальное значение при маршалинге.

resource.Quantity исходный код: https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go

Вопрос

Можно ли заменить пользовательский маршаллер на resource.Quantity, если json.Marshall(hpa) или resource.Quantity имеет настройку, которая может изменить поведение func (q Quantity) MarshalJSON() ([]byte, error)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...