[GitHub] [flink] TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design
TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design URL: https://github.com/apache/flink/pull/11233#discussion_r387862667 ## File path: flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/KubernetesJobManagerSpecification.java ## @@ -16,19 +16,32 @@ * limitations under the License. */ -package org.apache.flink.kubernetes.kubeclient.resources; - -import org.apache.flink.configuration.Configuration; +package org.apache.flink.kubernetes.kubeclient; +import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; + +import java.util.List; /** - * Represent KubernetesDeployment resource in kubernetes. + * Composition of the created Kubernetes components that represents a Flink application. Review comment: You can edit the commit introduce this instead of adding fixup. I think we agree on most of codes now. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [flink] TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design
TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design URL: https://github.com/apache/flink/pull/11233#discussion_r387862136 ## File path: flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/KubernetesJobManagerSpecification.java ## @@ -16,19 +16,32 @@ * limitations under the License. */ -package org.apache.flink.kubernetes.kubeclient.resources; - -import org.apache.flink.configuration.Configuration; +package org.apache.flink.kubernetes.kubeclient; +import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; + +import java.util.List; /** - * Represent KubernetesDeployment resource in kubernetes. + * Composition of the created Kubernetes components that represents a Flink application. Review comment: ```suggestion * Composition of the created Kubernetes components that represents a Flink application. ``` This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [flink] TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design
TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design URL: https://github.com/apache/flink/pull/11233#discussion_r387861569 ## File path: flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/FlinkPod.java ## @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.kubernetes.kubeclient; + +import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.ContainerBuilder; +import io.fabric8.kubernetes.api.model.Pod; +import io.fabric8.kubernetes.api.model.PodBuilder; + +import static org.apache.flink.util.Preconditions.checkNotNull; + +/** + * A collection of variables that composes a JobManager/TaskManager Pod. This can include + * the Pod, the main Container, and the InitContainer, etc. + */ +public class FlinkPod { + + private Pod pod; + + private Container mainContainer; + + public FlinkPod(Pod pod, Container mainContainer) { + this.pod = pod; + this.mainContainer = mainContainer; + } + + public Pod getPod() { + return pod; + } + + public void setPod(Pod pod) { + this.pod = pod; + } + + public Container getMainContainer() { + return mainContainer; + } + + public void setMainContainer(Container mainContainer) { + this.mainContainer = mainContainer; + } + + /** +* Builder for creating a {@link FlinkPod}. +*/ + public static class Builder { + + private Pod pod; + private Container mainContainer; + + public Builder() { + this.pod = new PodBuilder() + .withNewMetadata() + .endMetadata() + .withNewSpec() + .endSpec() + .build(); + + this.mainContainer = new ContainerBuilder().build(); + } + + public Builder(FlinkPod flinkPod) { Review comment: As the document of `AbstractKubernetesStepDecorator`, I'm ok that this Builder follows fabric8's Builder pattern. However, Flink has its own Builder pattern and even a [style guide](http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/CODE-STYLE-Builder-pattern-tt32225.html) for it. We can defer the change decision and leave as is now. cc @gyfora seems we forget adding the code style of Builder pattern in flink document. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [flink] TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design
TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design URL: https://github.com/apache/flink/pull/11233#discussion_r387861569 ## File path: flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/FlinkPod.java ## @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.kubernetes.kubeclient; + +import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.ContainerBuilder; +import io.fabric8.kubernetes.api.model.Pod; +import io.fabric8.kubernetes.api.model.PodBuilder; + +import static org.apache.flink.util.Preconditions.checkNotNull; + +/** + * A collection of variables that composes a JobManager/TaskManager Pod. This can include + * the Pod, the main Container, and the InitContainer, etc. + */ +public class FlinkPod { + + private Pod pod; + + private Container mainContainer; + + public FlinkPod(Pod pod, Container mainContainer) { + this.pod = pod; + this.mainContainer = mainContainer; + } + + public Pod getPod() { + return pod; + } + + public void setPod(Pod pod) { + this.pod = pod; + } + + public Container getMainContainer() { + return mainContainer; + } + + public void setMainContainer(Container mainContainer) { + this.mainContainer = mainContainer; + } + + /** +* Builder for creating a {@link FlinkPod}. +*/ + public static class Builder { + + private Pod pod; + private Container mainContainer; + + public Builder() { + this.pod = new PodBuilder() + .withNewMetadata() + .endMetadata() + .withNewSpec() + .endSpec() + .build(); + + this.mainContainer = new ContainerBuilder().build(); + } + + public Builder(FlinkPod flinkPod) { Review comment: As the document of `AbstractKubernetesStepDecorator`, I'm ok that this Builder follows fabric8's Builder pattern. However, Flink has its own Builder and even a [style guide](http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/CODE-STYLE-Builder-pattern-tt32225.html) for it. We can defer the change decision and leave as is now. cc @gyfora seems we forget adding the code style of Builder pattern in flink document. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [flink] TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design
TisonKun commented on a change in pull request #11233: [FLINK-16194][k8s] Refactor the Kubernetes decorator design URL: https://github.com/apache/flink/pull/11233#discussion_r387857955 ## File path: flink-kubernetes/src/main/java/org/apache/flink/kubernetes/kubeclient/FlinkPod.java ## @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.kubernetes.kubeclient; + +import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.ContainerBuilder; +import io.fabric8.kubernetes.api.model.Pod; +import io.fabric8.kubernetes.api.model.PodBuilder; + +import static org.apache.flink.util.Preconditions.checkNotNull; + +/** + * A collection of variables that composes a JobManager/TaskManager Pod. This can include + * the Pod, the main Container, and the InitContainer, etc. + */ +public class FlinkPod { + + private Pod pod; + + private Container mainContainer; + + public FlinkPod(Pod pod, Container mainContainer) { + this.pod = pod; + this.mainContainer = mainContainer; + } + + public Pod getPod() { + return pod; + } + + public void setPod(Pod pod) { Review comment: nit: you can edit the FlinkPod commit to make it a value class, i.e., `pod` and `mainContainer` are `final` and no getters. This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services