src/Azure.Deployments.Extensibility.Extensions.Kubernetes/Models/K8sObject.cs (19 lines of code) (raw):
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.Text.Json.Nodes;
namespace Azure.Deployments.Extensibility.Extensions.Kubernetes.Models
{
internal class K8sObject
{
public K8sObject(GroupVersionKind groupVersionKind, JsonObject body)
{
this.GroupVersionKind = groupVersionKind;
this.Body = body;
body["apiVersion"] = groupVersionKind.GroupVersion;
body["kind"] = groupVersionKind.Kind;
}
public GroupVersionKind GroupVersionKind { get; }
public JsonObject Body { get; }
public JsonObject Metadata => this.Body["metadata"]?.AsObject() ?? throw new InvalidOperationException("Metadata must be non-null.");
public string Name => this.Metadata["name"]?.GetValue<string>() ?? throw new InvalidOperationException("Name metadata must be non-null.");
public string? Namespace => this.Metadata["namespace"]?.GetValue<string>();
}
}