Exemplo n.º 1
0
        /// <summary>
        /// Maps a list of k8s.Models.V1DaemonSet to DaemonSet
        /// </summary>
        /// <param name="list">The list to be mapped</param>
        private static IList <DeployedResource> MapDaemonSets(IList <V1DaemonSet> list)
        {
            IList <DeployedResource> mappedList = new List <DeployedResource>();

            if (list == null || list.Count == 0)
            {
                return(mappedList);
            }

            foreach (V1DaemonSet element in list)
            {
                IList <V1Container> containers = element.Spec?.Template?.Spec?.Containers;
                if (containers != null && containers.Count > 0)
                {
                    DaemonSet daemonSet = new DaemonSet {
                        Release = element.Metadata?.Name
                    };

                    string[] splittedVersion = containers[0].Image?.Split(":");
                    if (splittedVersion != null && splittedVersion.Length > 1)
                    {
                        daemonSet.Version = splittedVersion[1];
                    }

                    mappedList.Add(daemonSet);
                }
            }

            return(mappedList);
        }
Exemplo n.º 2
0
 internal DaemonSetInfo(DaemonSet obj)
 {
     _object = obj;
 }
Exemplo n.º 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);
            }
        }