package io.renren.modules.kubesphere.module.request;

import com.google.gson.annotations.SerializedName;

import java.util.List;

/**
 * @author chenrj
 * @email 1412736935@qq.com
 * @since 2021/8/10
 */
public class CreateStoreVolumesRequest extends KubeSphereRequest {
    @SerializedName("apiVersion")
    private String apiVersion;
    @SerializedName("kind")
    private String kind;
    @SerializedName("metadata")
    private MetadataDTO metadata;
    @SerializedName("spec")
    private SpecDTO spec;

    public String getApiVersion() {
        return apiVersion;
    }

    public void setApiVersion(String apiVersion) {
        this.apiVersion = apiVersion;
    }

    public String getKind() {
        return kind;
    }

    public void setKind(String kind) {
        this.kind = kind;
    }

    public MetadataDTO getMetadata() {
        return metadata;
    }

    public void setMetadata(MetadataDTO metadata) {
        this.metadata = metadata;
    }

    public SpecDTO getSpec() {
        return spec;
    }

    public void setSpec(SpecDTO spec) {
        this.spec = spec;
    }

    public static class MetadataDTO {
        @SerializedName("namespace")
        private String namespace;
        @SerializedName("name")
        private String name;
        @SerializedName("labels")
        private LabelsDTO labels;
        @SerializedName("annotations")
        private AnnotationsDTO annotations;

        public String getNamespace() {
            return namespace;
        }

        public void setNamespace(String namespace) {
            this.namespace = namespace;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public LabelsDTO getLabels() {
            return labels;
        }

        public void setLabels(LabelsDTO labels) {
            this.labels = labels;
        }

        public AnnotationsDTO getAnnotations() {
            return annotations;
        }

        public void setAnnotations(AnnotationsDTO annotations) {
            this.annotations = annotations;
        }

        public static class LabelsDTO {
            @SerializedName("abs")
            private String abs;
            @SerializedName("asd")
            private String asd;

            public String getAbs() {
                return abs;
            }

            public void setAbs(String abs) {
                this.abs = abs;
            }

            public String getAsd() {
                return asd;
            }

            public void setAsd(String asd) {
                this.asd = asd;
            }
        }

        public static class AnnotationsDTO {
            @SerializedName("kubesphere.io/alias-name")
            private String _$KubesphereIoAliasname92; // FIXME check this code
            @SerializedName("kubesphere.io/description")
            private String _$KubesphereIoDescription4; // FIXME check this code
            @SerializedName("kubesphere.io/creator")
            private String _$KubesphereIoCreator87; // FIXME check this code

            public String get_$KubesphereIoAliasname92() {
                return _$KubesphereIoAliasname92;
            }

            public void set_$KubesphereIoAliasname92(String _$KubesphereIoAliasname92) {
                this._$KubesphereIoAliasname92 = _$KubesphereIoAliasname92;
            }

            public String get_$KubesphereIoDescription4() {
                return _$KubesphereIoDescription4;
            }

            public void set_$KubesphereIoDescription4(String _$KubesphereIoDescription4) {
                this._$KubesphereIoDescription4 = _$KubesphereIoDescription4;
            }

            public String get_$KubesphereIoCreator87() {
                return _$KubesphereIoCreator87;
            }

            public void set_$KubesphereIoCreator87(String _$KubesphereIoCreator87) {
                this._$KubesphereIoCreator87 = _$KubesphereIoCreator87;
            }
        }
    }

    public static class SpecDTO {
        @SerializedName("resources")
        private ResourcesDTO resources;
        @SerializedName("storageClassName")
        private String storageClassName;
        @SerializedName("accessModes")
        private List<String> accessModes;

        public ResourcesDTO getResources() {
            return resources;
        }

        public void setResources(ResourcesDTO resources) {
            this.resources = resources;
        }

        public String getStorageClassName() {
            return storageClassName;
        }

        public void setStorageClassName(String storageClassName) {
            this.storageClassName = storageClassName;
        }

        public List<String> getAccessModes() {
            return accessModes;
        }

        public void setAccessModes(List<String> accessModes) {
            this.accessModes = accessModes;
        }

        public static class ResourcesDTO {
            @SerializedName("requests")
            private RequestsDTO requests;

            public RequestsDTO getRequests() {
                return requests;
            }

            public void setRequests(RequestsDTO requests) {
                this.requests = requests;
            }

            public static class RequestsDTO {
                @SerializedName("storage")
                private String storage;

                public String getStorage() {
                    return storage;
                }

                public void setStorage(String storage) {
                    this.storage = storage;
                }
            }
        }
    }
}
