示例#1
0
 public StatefulSetQuery(string ns, StatefulSet sts) : base("Choose an action")
 {
     this.ns          = ns;
     this.StatefulSet = sts;
 }
示例#2
0
 internal StatefulSetInfo(StatefulSet obj)
 {
     _object = obj;
 }
示例#3
0
        private async Task ResolveOwnerReferenceAsync(HttpClient httpClient, PodInfo podInfo, OwnerReference ownerReference)
        {
            JsonReader    reader;
            IMetaV1Object?obj = default;

            switch (ownerReference.Kind)
            {
            case "StatefulSet" when ownerReference.ApiVersion == "apps/v1":
                reader = await GetJsonAsync(httpClient, $"/apis/apps/v1/namespaces/{podInfo.Namespace}/statefulsets/{ownerReference.Name}");

                var statefulSet = new StatefulSet(ref reader);
                obj = statefulSet;
                podInfo.StatefulSet = new StatefulSetInfo(statefulSet);
                break;

            case "DaemonSet" when ownerReference.ApiVersion == "apps/v1":
                reader = await GetJsonAsync(httpClient, $"/apis/apps/v1/namespaces/{podInfo.Namespace}/daemonsets/{ownerReference.Name}");

                var daemonSet = new DaemonSet(ref reader);
                obj = daemonSet;
                podInfo.DaemonSet = new DaemonSetInfo(daemonSet);
                break;

            case "ReplicaSet" when ownerReference.ApiVersion == "apps/v1":
                reader = await GetJsonAsync(httpClient, $"/apis/apps/v1/namespaces/{podInfo.Namespace}/replicasets/{ownerReference.Name}");

                var replicaSet = new ReplicaSet(ref reader);
                obj = replicaSet;
                podInfo.ReplicaSet = new ReplicaSetInfo(replicaSet);
                break;

            case "Deployment" when ownerReference.ApiVersion == "apps/v1":
                reader = await GetJsonAsync(httpClient, $"/apis/apps/v1/namespaces/{podInfo.Namespace}/deployments/{ownerReference.Name}");

                var deployment = new Deployment(ref reader);
                obj = deployment;
                podInfo.Deployment = new DeploymentInfo(deployment);
                break;

            case "Job" when ownerReference.ApiVersion == "batch/v1":
                reader = await GetJsonAsync(httpClient, $"/apis/batch/v1/namespaces/{podInfo.Namespace}/jobs/{ownerReference.Name}");

                var job = new Job(ref reader);
                obj         = job;
                podInfo.Job = new JobInfo(job);
                break;

            case "CronJob" when ownerReference.ApiVersion == "batch/v1beta1":
                reader = await GetJsonAsync(httpClient, $"/apis/{ownerReference.ApiVersion}/namespaces/{podInfo.Namespace}/cronjobs/{ownerReference.Name}");

                var cronJob = new CronJob(ref reader);
                obj             = cronJob;
                podInfo.CronJob = new CronJobInfo(cronJob);
                break;
            }

            if (obj != null)
            {
                await ResolveOwnerReferencesAsync(httpClient, podInfo, obj.Metadata.OwnerReferences);
            }
        }