Class AbstractFlinkService

    • Field Detail

      • FIELD_NAME_TOTAL_CPU

        public static final java.lang.String FIELD_NAME_TOTAL_CPU
        See Also:
        Constant Field Values
      • FIELD_NAME_TOTAL_MEMORY

        public static final java.lang.String FIELD_NAME_TOTAL_MEMORY
        See Also:
        Constant Field Values
      • kubernetesClient

        protected final io.fabric8.kubernetes.client.KubernetesClient kubernetesClient
      • executorService

        protected final java.util.concurrent.ExecutorService executorService
    • Constructor Detail

      • AbstractFlinkService

        public AbstractFlinkService​(io.fabric8.kubernetes.client.KubernetesClient kubernetesClient,
                                    ArtifactManager artifactManager,
                                    java.util.concurrent.ExecutorService executorService,
                                    FlinkOperatorConfiguration operatorConfig)
    • Method Detail

      • getJmPodList

        protected abstract io.fabric8.kubernetes.api.model.PodList getJmPodList​(java.lang.String namespace,
                                                                                java.lang.String clusterId)
      • getTmPodList

        protected abstract io.fabric8.kubernetes.api.model.PodList getTmPodList​(java.lang.String namespace,
                                                                                java.lang.String clusterId)
      • deployApplicationCluster

        protected abstract void deployApplicationCluster​(JobSpec jobSpec,
                                                         org.apache.flink.configuration.Configuration conf)
                                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getKubernetesClient

        public io.fabric8.kubernetes.client.KubernetesClient getKubernetesClient()
        Specified by:
        getKubernetesClient in interface FlinkService
      • submitApplicationCluster

        public void submitApplicationCluster​(JobSpec jobSpec,
                                             org.apache.flink.configuration.Configuration conf,
                                             boolean requireHaMetadata)
                                      throws java.lang.Exception
        Specified by:
        submitApplicationCluster in interface FlinkService
        Throws:
        java.lang.Exception
      • isHaMetadataAvailable

        public boolean isHaMetadataAvailable​(org.apache.flink.configuration.Configuration conf)
        Specified by:
        isHaMetadataAvailable in interface FlinkService
      • submitJobToSessionCluster

        public org.apache.flink.api.common.JobID submitJobToSessionCluster​(io.fabric8.kubernetes.api.model.ObjectMeta meta,
                                                                           FlinkSessionJobSpec spec,
                                                                           org.apache.flink.configuration.Configuration conf,
                                                                           @Nullable
                                                                           java.lang.String savepoint)
                                                                    throws java.lang.Exception
        Specified by:
        submitJobToSessionCluster in interface FlinkService
        Throws:
        java.lang.Exception
      • isJobManagerPortReady

        public boolean isJobManagerPortReady​(org.apache.flink.configuration.Configuration config)
        Specified by:
        isJobManagerPortReady in interface FlinkService
      • listJobs

        public java.util.Collection<org.apache.flink.runtime.client.JobStatusMessage> listJobs​(org.apache.flink.configuration.Configuration conf)
                                                                                        throws java.lang.Exception
        Specified by:
        listJobs in interface FlinkService
        Throws:
        java.lang.Exception
      • requestJobResult

        public org.apache.flink.runtime.jobmaster.JobResult requestJobResult​(org.apache.flink.configuration.Configuration conf,
                                                                             org.apache.flink.api.common.JobID jobID)
                                                                      throws java.lang.Exception
        Specified by:
        requestJobResult in interface FlinkService
        Throws:
        java.lang.Exception
      • cancelJob

        protected void cancelJob​(FlinkDeployment deployment,
                                 UpgradeMode upgradeMode,
                                 org.apache.flink.configuration.Configuration conf,
                                 boolean deleteClusterAfterSavepoint)
                          throws java.lang.Exception
        Throws:
        java.lang.Exception
      • cancelSessionJob

        public void cancelSessionJob​(FlinkSessionJob sessionJob,
                                     UpgradeMode upgradeMode,
                                     org.apache.flink.configuration.Configuration conf)
                              throws java.lang.Exception
        Specified by:
        cancelSessionJob in interface FlinkService
        Throws:
        java.lang.Exception
      • triggerSavepoint

        public void triggerSavepoint​(java.lang.String jobId,
                                     SnapshotTriggerType triggerType,
                                     SavepointInfo savepointInfo,
                                     org.apache.flink.configuration.Configuration conf)
                              throws java.lang.Exception
        Specified by:
        triggerSavepoint in interface FlinkService
        Throws:
        java.lang.Exception
      • triggerCheckpoint

        public void triggerCheckpoint​(java.lang.String jobId,
                                      SnapshotTriggerType triggerType,
                                      CheckpointInfo checkpointInfo,
                                      org.apache.flink.configuration.Configuration conf)
                               throws java.lang.Exception
        Specified by:
        triggerCheckpoint in interface FlinkService
        Throws:
        java.lang.Exception
      • getLastCheckpoint

        public java.util.Optional<Savepoint> getLastCheckpoint​(org.apache.flink.api.common.JobID jobId,
                                                               org.apache.flink.configuration.Configuration conf)
                                                        throws java.lang.Exception
        Specified by:
        getLastCheckpoint in interface FlinkService
        Throws:
        java.lang.Exception
      • disposeSavepoint

        public void disposeSavepoint​(java.lang.String savepointPath,
                                     org.apache.flink.configuration.Configuration conf)
                              throws java.lang.Exception
        Specified by:
        disposeSavepoint in interface FlinkService
        Throws:
        java.lang.Exception
      • getClusterInfo

        public java.util.Map<java.lang.String,​java.lang.String> getClusterInfo​(org.apache.flink.configuration.Configuration conf)
                                                                              throws java.lang.Exception
        Specified by:
        getClusterInfo in interface FlinkService
        Throws:
        java.lang.Exception
      • getJmPodList

        public io.fabric8.kubernetes.api.model.PodList getJmPodList​(FlinkDeployment deployment,
                                                                    org.apache.flink.configuration.Configuration conf)
        Specified by:
        getJmPodList in interface FlinkService
      • waitForClusterShutdown

        public void waitForClusterShutdown​(org.apache.flink.configuration.Configuration conf)
        Specified by:
        waitForClusterShutdown in interface FlinkService
      • getClusterClient

        public org.apache.flink.client.program.rest.RestClusterClient<java.lang.String> getClusterClient​(org.apache.flink.configuration.Configuration conf)
                                                                                                  throws java.lang.Exception
        Specified by:
        getClusterClient in interface FlinkService
        Throws:
        java.lang.Exception
      • runJar

        @VisibleForTesting
        protected void runJar​(JobSpec job,
                              org.apache.flink.api.common.JobID jobID,
                              org.apache.flink.runtime.webmonitor.handlers.JarUploadResponseBody response,
                              org.apache.flink.configuration.Configuration conf,
                              java.lang.String savepoint)
      • uploadJar

        @VisibleForTesting
        protected org.apache.flink.runtime.webmonitor.handlers.JarUploadResponseBody uploadJar​(io.fabric8.kubernetes.api.model.ObjectMeta objectMeta,
                                                                                               FlinkSessionJobSpec spec,
                                                                                               org.apache.flink.configuration.Configuration conf)
                                                                                        throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getRestClient

        @VisibleForTesting
        protected org.apache.flink.runtime.rest.RestClient getRestClient​(org.apache.flink.configuration.Configuration conf)
                                                                  throws org.apache.flink.util.ConfigurationException
        Throws:
        org.apache.flink.util.ConfigurationException
      • getJobDetailsInfo

        public org.apache.flink.runtime.rest.messages.job.JobDetailsInfo getJobDetailsInfo​(org.apache.flink.api.common.JobID jobID,
                                                                                           org.apache.flink.configuration.Configuration conf)
                                                                                    throws java.lang.Exception
        Specified by:
        getJobDetailsInfo in interface FlinkService
        Throws:
        java.lang.Exception
      • removeOperatorConfigs

        @VisibleForTesting
        protected static org.apache.flink.configuration.Configuration removeOperatorConfigs​(org.apache.flink.configuration.Configuration config)
      • getEffectiveStatus

        @VisibleForTesting
        protected static org.apache.flink.api.common.JobStatus getEffectiveStatus​(org.apache.flink.runtime.messages.webmonitor.JobDetails details)
      • getMetrics

        public java.util.Map<java.lang.String,​java.lang.String> getMetrics​(org.apache.flink.configuration.Configuration conf,
                                                                                 java.lang.String jobId,
                                                                                 java.util.List<java.lang.String> metricNames)
                                                                          throws java.lang.Exception
        Specified by:
        getMetrics in interface FlinkService
        Throws:
        java.lang.Exception
      • deleteClusterDeployment

        public final void deleteClusterDeployment​(io.fabric8.kubernetes.api.model.ObjectMeta meta,
                                                  FlinkDeploymentStatus status,
                                                  org.apache.flink.configuration.Configuration conf,
                                                  boolean deleteHaData)
        Specified by:
        deleteClusterDeployment in interface FlinkService
      • deleteClusterInternal

        protected abstract void deleteClusterInternal​(io.fabric8.kubernetes.api.model.ObjectMeta meta,
                                                      org.apache.flink.configuration.Configuration conf,
                                                      boolean deleteHaData,
                                                      io.fabric8.kubernetes.api.model.DeletionPropagation deletionPropagation)
        Delete Flink kubernetes cluster by deleting the kubernetes resources directly. Optionally allows deleting the native kubernetes HA resources as well.
        Parameters:
        meta - ObjectMeta of the deployment
        conf - Configuration of the Flink application
        deleteHaData - Flag to indicate whether k8s or Zookeeper HA metadata should be removed as well
        deletionPropagation - Resource deletion propagation policy
      • deleteHAData

        protected void deleteHAData​(java.lang.String namespace,
                                    java.lang.String clusterId,
                                    org.apache.flink.configuration.Configuration conf)
      • updateStatusAfterClusterDeletion

        protected void updateStatusAfterClusterDeletion​(FlinkDeploymentStatus status)