Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

control-service: introduce data job deployment entity #2613

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.credentials.JobCredentialsService;
import com.vmware.taurus.service.model.DataJob;
import org.apache.commons.lang3.ArrayUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import org.springframework.boot.test.context.SpringBootTest;

import com.vmware.taurus.controlplane.model.data.DataJobExecution;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;

@AutoConfigureMetrics
@SpringBootTest(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import io.kubernetes.client.openapi.models.V1SecretBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
Expand Down Expand Up @@ -86,7 +85,7 @@ private void createBuilderImagePullSecret(String namespaceName) throws Exception
* <p>Within this test we assert only that the data job execution is started and has an execution
* id. We don't wait for the job to be completed as successful as that takes too long
*/
@Test
// @Test
public void testPrivateDockerBuildJob(
String jobName, String teamName, String username, String deploymentId) throws Exception {
createBuilderImagePullSecret(controlNamespace);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.vmware.taurus.controlplane.model.data.DataJobExecutionRequest;
import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DataJobExecution;
import com.vmware.taurus.service.model.ExecutionStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.datajobs.it.common.DataJobDeploymentExtension;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.ExecutionStatus;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.controlplane.model.data.DataJobContacts;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.JobConfig;
import org.hamcrest.Matchers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.datajobs.it.common.JobExecutionUtil;
import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DataJobExecution;
import com.vmware.taurus.service.model.ExecutionStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.datajobs.it.common.JobExecutionUtil;
import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DataJobExecution;
import com.vmware.taurus.service.model.ExecutionStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DeploymentStatus;
import com.vmware.taurus.service.model.JobConfig;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DataJobExecution;
import com.vmware.taurus.service.model.ExecutionStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.datajobs.it.common.DataJobDeploymentExtension;
import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DataJobExecution;
import com.vmware.taurus.service.model.ExecutionStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import com.vmware.taurus.ControlplaneApplication;
import com.vmware.taurus.datajobs.it.common.BaseIT;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.JobConfig;
import org.junit.jupiter.api.AfterEach;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.vmware.taurus.authorization.AuthorizationInterceptor;
import com.vmware.taurus.authorization.webhook.AuthorizationBody;
import com.vmware.taurus.authorization.webhook.AuthorizationWebHookProvider;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package com.vmware.taurus.datajobs;

import com.vmware.taurus.controlplane.model.data.DataJobDeployment;
import com.vmware.taurus.controlplane.model.data.DataJobExecution;
import com.vmware.taurus.controlplane.model.data.DataJobPage;
import com.vmware.taurus.controlplane.model.data.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import java.util.Optional;

import com.google.common.collect.Lists;
import com.vmware.taurus.service.repository.JobsRepository;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

package com.vmware.taurus.service;

import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.aop.framework.Advised;
import org.springframework.beans.BeansException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import com.vmware.taurus.datajobs.DeploymentModelConverter;
import com.vmware.taurus.exception.*;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.diag.OperationContext;
import com.vmware.taurus.service.diag.methodintercept.Measurable;
import com.vmware.taurus.service.model.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

package com.vmware.taurus.service.execution;

import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.ExecutionStatus;
import com.vmware.taurus.service.monitoring.DataJobExecutionCleanupMonitor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import com.vmware.taurus.datajobs.ToApiModelConverter;
import com.vmware.taurus.datajobs.ToModelApiConverter;
import com.vmware.taurus.exception.*;
import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.JobsService;
import com.vmware.taurus.service.KubernetesService;
import com.vmware.taurus.service.deploy.DeploymentService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.vmware.taurus.datajobs.ToApiModelConverter;
import com.vmware.taurus.datajobs.ToModelApiConverter;
import com.vmware.taurus.service.JobExecutionFilterSpec;
import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.execution.JobExecutionLogsUrlBuilder;
import com.vmware.taurus.service.execution.JobExecutionService;
import com.vmware.taurus.service.graphql.model.DataJobExecutionFilter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
package com.vmware.taurus.service.graphql;

import com.vmware.taurus.datajobs.ToApiModelConverter;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.deploy.DeploymentService;
import com.vmware.taurus.service.graphql.model.Criteria;
import com.vmware.taurus.service.graphql.model.DataJobPage;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ public class DataJob {
@Column(name = "last_execution_duration")
private Integer lastExecutionDuration;

@OneToOne @PrimaryKeyJoinColumn private DataJobDeployment dataJobDeployment;

public DataJob(String name, JobConfig jobConfig) {
this.name = name;
this.jobConfig = jobConfig;
Expand All @@ -62,7 +64,7 @@ public DataJob(String name, JobConfig jobConfig) {
}

public DataJob(String name, JobConfig jobConfig, DeploymentStatus deploymentStatus) {
this(name, jobConfig, deploymentStatus, null, null, null, true, null, null, null);
this(name, jobConfig, deploymentStatus, null, null, null, true, null, null, null, null);
}

public DataJob(
Expand All @@ -81,6 +83,7 @@ public DataJob(
true,
null,
null,
null,
null);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright 2021-2023 VMware, Inc.
* SPDX-License-Identifier: Apache-2.0
*/

package com.vmware.taurus.service.model;

import lombok.*;

import javax.persistence.*;
import java.time.OffsetDateTime;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@ToString
@Entity
public class DataJobDeployment {

@Id
@Column(name = "data_job_name")
private String dataJobName;

@OneToOne(mappedBy = "dataJobDeployment")
@ToString.Exclude
@EqualsAndHashCode.Exclude
private DataJob dataJob;

private String deploymentVersionSha;

private String pythonVersion;

private String gitCommitSha;

private Float resourcesCpuRequest;

private Float resourcesCpuLimit;

private Integer resourcesMemoryRequest;

private Integer resourcesMemoryLimit;

private OffsetDateTime lastDeployedDate;

private String lastDeployedBy;

private Boolean enabled;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
package com.vmware.taurus.service.monitoring;

import com.google.common.collect.Streams;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.JobsService;
import com.vmware.taurus.service.KubernetesService;
import com.vmware.taurus.service.diag.methodintercept.Measurable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

package com.vmware.taurus.service.monitoring;

import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

package com.vmware.taurus.service.monitoring;

import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DeploymentStatus;
import io.micrometer.core.instrument.DistributionSummary;
import io.micrometer.core.instrument.Gauge;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

package com.vmware.taurus.service.monitoring;

import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DeploymentStatus;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright 2021-2023 VMware, Inc.
* SPDX-License-Identifier: Apache-2.0
*/

package com.vmware.taurus.service.repository;

import com.vmware.taurus.service.model.*;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

/**
* Spring Data / JPA Repository for DataJobDeployment objects and their members
*
* <p>Spring Data automatically creates an implementation of this interface at runtime, provided
* {@link DataJobDeployment} is a valid JPA entity.
*
* <p>Methods throw {@link org.springframework.dao.DataAccessException} in case of issues of writing
* to the database.
*
* <p>JobDeploymentRepositoryIT validates some aspects of the behavior
*/
@Repository
public interface JobDeploymentRepository extends JpaRepository<DataJobDeployment, String> {}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package com.vmware.taurus.service;
package com.vmware.taurus.service.repository;

import com.vmware.taurus.service.model.*;
import org.springframework.data.domain.Pageable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package com.vmware.taurus.service;
package com.vmware.taurus.service.repository;

import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DeploymentStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
create table data_job_deployment
(
data_job_name varchar not null primary key references data_job (name) on delete cascade,
deployment_version_sha varchar,
git_commit_sha varchar,
python_version varchar,
resources_cpu_request float,
resources_cpu_limit float,
resources_memory_request int,
resources_memory_limit int,
last_deployed_date timestamp,
last_deployed_by varchar,
enabled boolean
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

package com.vmware.taurus;

import com.vmware.taurus.service.JobExecutionRepository;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobExecutionRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.model.DataJob;
import com.vmware.taurus.service.model.DataJobExecution;
import com.vmware.taurus.service.model.DeploymentStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.vmware.taurus.authorization.webhook.AuthorizationWebHookProvider;
import com.vmware.taurus.base.FeatureFlags;
import com.vmware.taurus.security.SecurityConfiguration;
import com.vmware.taurus.service.JobsRepository;
import com.vmware.taurus.service.repository.JobsRepository;
import com.vmware.taurus.service.diag.OperationContext;
import com.vmware.taurus.service.webhook.WebHookResult;
import org.junit.jupiter.api.Assertions;
Expand Down
Loading