Skip to content

Commit

Permalink
Revert removal of old methods from Batch and policy APIs
Browse files Browse the repository at this point in the history
This commit reverts removal of the following DSLs:
- `client.batch().jobs()`
- `client.batch().cronjobs()`
- `client.policy().podSecurityPolicies()`
- `client.policy().podDisruptionBudget()`
  • Loading branch information
rohanKanojia committed Apr 14, 2021
1 parent d8d537e commit 926ba43
Show file tree
Hide file tree
Showing 18 changed files with 151 additions and 70 deletions.
8 changes: 4 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

#### _**Note**_: Breaking changes in the API
##### DSL Changes:
- `client.batch().jobs()` moved to `client.batch().v1().jobs()`
- `client.batch().cronjobs()` moved to `client.batch().v1().cronjobs()` or `client.batch().v1beta1().cronjobs()`
- `client.policy().podSecurityPolicies()` moved to `client.policy().v1beta1().podSecurityPolicies()`
- `client.policy().podDisruptionBudget()` moved to `client.policy().v1().podDisruptionBudget()` or `client.policy().v1beta1().podDisruptionBudget()`
- `client.batch().jobs()` deprecated, suggestion to move to `client.batch().v1().jobs()`
- `client.batch().cronjobs()` deprecated, suggestion to move to `client.batch().v1().cronjobs()` or `client.batch().v1beta1().cronjobs()`
- `client.policy().podSecurityPolicies()` deprecated, suggestion to move to `client.policy().v1beta1().podSecurityPolicies()`
- `client.policy().podDisruptionBudget()` deprecated, suggestion to move to `client.policy().v1().podDisruptionBudget()` or `client.policy().v1beta1().podDisruptionBudget()`

##### Model Changes:
- Classes in `io.fabric8.kubernetes.api.model.batch` have been moved to `io.fabric8.kubernetes.api.model.batch.v1` and `io.fabric8.kubernetes.api.model.batch.v1beta1`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,18 @@
*/
package io.fabric8.kubernetes.client;

import io.fabric8.kubernetes.api.model.batch.v1.Job;
import io.fabric8.kubernetes.api.model.batch.v1.JobList;
import io.fabric8.kubernetes.api.model.batch.v1beta1.CronJob;
import io.fabric8.kubernetes.api.model.batch.v1beta1.CronJobList;
import io.fabric8.kubernetes.client.dsl.BatchAPIGroupDSL;
import io.fabric8.kubernetes.client.dsl.MixedOperation;
import io.fabric8.kubernetes.client.dsl.Resource;
import io.fabric8.kubernetes.client.dsl.ScalableResource;
import io.fabric8.kubernetes.client.dsl.V1BatchAPIGroupDSL;
import io.fabric8.kubernetes.client.dsl.V1beta1BatchAPIGroupDSL;
import io.fabric8.kubernetes.client.dsl.internal.batch.v1beta1.CronJobOperationsImpl;
import io.fabric8.kubernetes.client.dsl.internal.batch.v1.JobOperationsImpl;
import okhttp3.OkHttpClient;

public class BatchAPIGroupClient extends BaseClient implements BatchAPIGroupDSL {
Expand All @@ -30,6 +39,16 @@ public BatchAPIGroupClient(OkHttpClient httpClient, final Config config) {
super(httpClient, config);
}

@Override
public MixedOperation<Job, JobList, ScalableResource<Job>> jobs() {
return new JobOperationsImpl(httpClient, getConfiguration());
}

@Override
public MixedOperation<CronJob, CronJobList, Resource<CronJob>> cronjobs() {
return new CronJobOperationsImpl(httpClient, getConfiguration());
}

@Override
public V1BatchAPIGroupDSL v1() {
return adapt(V1BatchAPIGroupClient.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,17 @@
*/
package io.fabric8.kubernetes.client;

import io.fabric8.kubernetes.api.model.policy.v1beta1.PodDisruptionBudget;
import io.fabric8.kubernetes.api.model.policy.v1beta1.PodDisruptionBudgetList;
import io.fabric8.kubernetes.api.model.policy.v1beta1.PodSecurityPolicy;
import io.fabric8.kubernetes.api.model.policy.v1beta1.PodSecurityPolicyList;
import io.fabric8.kubernetes.client.dsl.MixedOperation;
import io.fabric8.kubernetes.client.dsl.PolicyAPIGroupDSL;
import io.fabric8.kubernetes.client.dsl.Resource;
import io.fabric8.kubernetes.client.dsl.V1PolicyAPIGroupDSL;
import io.fabric8.kubernetes.client.dsl.V1beta1PolicyAPIGroupDSL;
import io.fabric8.kubernetes.client.dsl.internal.policy.v1beta1.PodDisruptionBudgetOperationsImpl;
import io.fabric8.kubernetes.client.dsl.internal.policy.v1beta1.PodSecurityPolicyOperationsImpl;
import okhttp3.OkHttpClient;

public class PolicyAPIGroupClient extends BaseClient implements PolicyAPIGroupDSL {
Expand All @@ -26,6 +34,16 @@ public PolicyAPIGroupClient(OkHttpClient httpClient, final Config config) {
super(httpClient, config);
}

@Override
public MixedOperation<PodDisruptionBudget, PodDisruptionBudgetList, Resource<PodDisruptionBudget>> podDisruptionBudget() {
return new PodDisruptionBudgetOperationsImpl(httpClient, getConfiguration());
}

@Override
public MixedOperation<PodSecurityPolicy, PodSecurityPolicyList, Resource<PodSecurityPolicy>> podSecurityPolicies() {
return new PodSecurityPolicyOperationsImpl(httpClient, getConfiguration());
}

@Override
public V1PolicyAPIGroupDSL v1() {
return adapt(V1PolicyAPIGroupClient.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,32 @@
*/
package io.fabric8.kubernetes.client.dsl;

import io.fabric8.kubernetes.api.model.batch.v1.Job;
import io.fabric8.kubernetes.api.model.batch.v1.JobList;
import io.fabric8.kubernetes.api.model.batch.v1beta1.CronJob;
import io.fabric8.kubernetes.api.model.batch.v1beta1.CronJobList;
import io.fabric8.kubernetes.client.Client;

public interface BatchAPIGroupDSL extends Client{

/**
* DSL entrypoint for batch/v1 Jobs
*
* @deprecated Use client.batch().v1().jobs() instead
* @return {@link MixedOperation} for Job resource
*/
@Deprecated
MixedOperation<Job, JobList, ScalableResource<Job>> jobs();

/**
* DSL entrypoint for batch/v1beta1 CronJob
*
* @deprecated Use client.batch().v1beta1().cronjobs() or client.batch().v1().cronjobs()
* @return {@link MixedOperation} for CronJob resource
*/
@Deprecated
MixedOperation<CronJob, CronJobList, Resource<CronJob>> cronjobs();

V1BatchAPIGroupDSL v1();

V1beta1BatchAPIGroupDSL v1beta1();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,31 @@
*/
package io.fabric8.kubernetes.client.dsl;

import io.fabric8.kubernetes.api.model.policy.v1beta1.PodDisruptionBudget;
import io.fabric8.kubernetes.api.model.policy.v1beta1.PodDisruptionBudgetList;
import io.fabric8.kubernetes.api.model.policy.v1beta1.PodSecurityPolicy;
import io.fabric8.kubernetes.api.model.policy.v1beta1.PodSecurityPolicyList;
import io.fabric8.kubernetes.client.Client;

public interface PolicyAPIGroupDSL extends Client {
/**
* DSL entrypoint for policy/v1beta1 PodDisruptionBudget
*
* @deprecated Use client.policy().v1beta1().podDisruptionBudget() or client.policy().v1().podDisruptionBudget()
* @return {@link MixedOperation} for PodDisruptionBudget
*/
@Deprecated
MixedOperation<PodDisruptionBudget, PodDisruptionBudgetList, Resource<PodDisruptionBudget>> podDisruptionBudget();

/**
* DSL entrypoint for policy/v1beta1 PodSecurityPolicy
*
* @deprecated Use client.policy().v1beta1().podSecurityPolicies() or client.policy().v1().podSecurityPolicies() instead
* @return {@link MixedOperation} for PodSecurityPolicy
*/
@Deprecated
MixedOperation<PodSecurityPolicy, PodSecurityPolicyList, Resource<PodSecurityPolicy>> podSecurityPolicies();

V1PolicyAPIGroupDSL v1();

V1beta1PolicyAPIGroupDSL v1beta1();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public static void main(String[] args) {
.build();

log("Creating cron job from object");
cronJob1 = client.batch().v1beta1().cronjobs().inNamespace(namespace).create(cronJob1);
cronJob1 = client.batch().cronjobs().inNamespace(namespace).create(cronJob1);
log("Successfully created cronjob with name ", cronJob1.getMetadata().getName());

log("Watching over pod which would be created during cronjob execution...");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void onClose(WatcherException e) {
log("Create resource quota", client.resourceQuotas().inNamespace("thisisatest").create(quota));

try {
log("Get jobs in namespace", client.batch().v1().jobs().inNamespace("thisisatest").list());
log("Get jobs in namespace", client.batch().jobs().inNamespace("thisisatest").list());
} catch (APIGroupNotAvailableException e) {
log("Skipping jobs example - extensions API group not available");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static void main(String[] args) {
.build();

logger.info("Creating job pi.");
client.batch().v1().jobs().inNamespace(namespace).createOrReplace(job);
client.batch().jobs().inNamespace(namespace).createOrReplace(job);

// Get All pods created by the job
PodList podList = client.pods().inNamespace(namespace).withLabel("job-name", job.getMetadata().getName()).list();
Expand All @@ -69,7 +69,7 @@ public static void main(String[] args) {
.waitUntilCondition(pod -> pod.getStatus().getPhase().equals("Succeeded"), 1, TimeUnit.MINUTES);

// Print Job's log
String joblog = client.batch().v1().jobs().inNamespace(namespace).withName("pi").getLog();
String joblog = client.batch().jobs().inNamespace(namespace).withName("pi").getLog();
logger.info(joblog);

} catch (KubernetesClientException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public static void main(String[] args) {

try {
logger.info("Listing jobs in namespace");
client.batch().v1().jobs().inNamespace(namespace).list().getItems()
client.batch().jobs().inNamespace(namespace).list().getItems()
.forEach(j -> logger.info(" - {}", j.getMetadata().getName()));
} catch (APIGroupNotAvailableException e) {
logger.warn("Skipping jobs example - extensions API group not available");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public static void main(String[] args) {
.build();

logger.info("Current namespace is {}", namespace);
client.policy().v1beta1().podDisruptionBudget().inNamespace(namespace).createOrReplace(podDisruptionBudget);
client.policy().podDisruptionBudget().inNamespace(namespace).createOrReplace(podDisruptionBudget);

} catch (KubernetesClientException e) {
logger.error("Could not create resource: {}", e.getMessage(), e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,18 @@ public static void main(String[] args) {
final String localYamlToCreate = "/PodSecurityPolicy.yml";
logger.info("Creating PodSecurityPolicy from Yaml file: {}", localYamlToCreate);
try (final InputStream localYamlStream = PodSecurityPolicyExample.class.getResourceAsStream(localYamlToCreate)) {
final PodSecurityPolicy podSecurityPolicy = client.policy().v1beta1().podSecurityPolicies().load(localYamlStream).get();
client.policy().v1beta1().podSecurityPolicies().withName(podSecurityPolicy.getMetadata().getName()).delete();
client.policy().v1beta1().podSecurityPolicies().withName(podSecurityPolicy.getMetadata().getName())
final PodSecurityPolicy podSecurityPolicy = client.policy().podSecurityPolicies().load(localYamlStream).get();
client.policy().podSecurityPolicies().withName(podSecurityPolicy.getMetadata().getName()).delete();
client.policy().podSecurityPolicies().withName(podSecurityPolicy.getMetadata().getName())
.waitUntilCondition(Objects::isNull, 5, TimeUnit.SECONDS);
client.policy().v1beta1().podSecurityPolicies().create(podSecurityPolicy);
client.policy().podSecurityPolicies().create(podSecurityPolicy);
logger.info("PodSecurityPolicy created with Name : {}", podSecurityPolicy.getMetadata().getName());
}

logger.info("Starting creating PodSecurityPolicy programmatically");
final String podSecurityPolicyName = "example2";
client.policy().v1beta1().podSecurityPolicies().withName(podSecurityPolicyName).delete();
client.policy().v1beta1().podSecurityPolicies().withName(podSecurityPolicyName)
client.policy().podSecurityPolicies().withName(podSecurityPolicyName).delete();
client.policy().podSecurityPolicies().withName(podSecurityPolicyName)
.waitUntilCondition(Objects::isNull, 5, TimeUnit.SECONDS);
final PodSecurityPolicy programmaticPodSecurityPolicy = new PodSecurityPolicyBuilder().withNewMetadata()
.withName(podSecurityPolicyName)
Expand All @@ -64,7 +64,7 @@ public static void main(String[] args) {
.withNewSupplementalGroups().withRule("RunAsAny").endSupplementalGroups()
.endSpec()
.build();
client.policy().v1beta1().podSecurityPolicies().create(programmaticPodSecurityPolicy);
client.policy().podSecurityPolicies().create(programmaticPodSecurityPolicy);
logger.info("PodSecurityPolicy created with Name: {}", programmaticPodSecurityPolicy.getMetadata().getName());
} catch (KubernetesClientException clientException) {
logger.error("Problem encountered with Kubernetes client!!", clientException);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,30 +53,30 @@ public static void init() {

@Test
public void load() {
CronJob aCronJob = client.batch().v1beta1().cronjobs().load(getClass().getResourceAsStream("/test-cronjob.yml")).get();
CronJob aCronJob = client.batch().cronjobs().load(getClass().getResourceAsStream("/test-cronjob.yml")).get();
assertNotNull(aCronJob);
assertEquals("hello", aCronJob.getMetadata().getName());
}

@Test
public void get() {
currentNamespace = session.getNamespace();
CronJob cronJob1 = client.batch().v1beta1().cronjobs().inNamespace(currentNamespace).withName("hello-get").get();
CronJob cronJob1 = client.batch().cronjobs().inNamespace(currentNamespace).withName("hello-get").get();
assertThat(cronJob1).isNotNull();
}

@Test
public void list() {
currentNamespace = session.getNamespace();
CronJobList cronJobList = client.batch().v1beta1().cronjobs().inNamespace(currentNamespace).list();
CronJobList cronJobList = client.batch().cronjobs().inNamespace(currentNamespace).list();
assertNotNull(cronJobList);
assertTrue(cronJobList.getItems().size() >= 1);
}

@Test
public void update() {
currentNamespace = session.getNamespace();
CronJob cronJob1 = client.batch().v1beta1().cronjobs().inNamespace(currentNamespace).withName("hello-update")
CronJob cronJob1 = client.batch().cronjobs().inNamespace(currentNamespace).withName("hello-update")
.edit(c -> new CronJobBuilder(c)
.editSpec()
.withSchedule("*/1 * * * *")
Expand All @@ -88,7 +88,7 @@ public void update() {
@Test
public void delete() {
currentNamespace = session.getNamespace();
assertTrue(client.batch().v1beta1().cronjobs().inNamespace(currentNamespace).withName("hello-delete").delete());
assertTrue(client.batch().cronjobs().inNamespace(currentNamespace).withName("hello-delete").delete());
}

@AfterClass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ public void testGetLog() {
Job job = getJobBuilder().build();

// When
client.batch().v1().jobs().inNamespace(session.getNamespace()).createOrReplace(job);
client.batch().jobs().inNamespace(session.getNamespace()).createOrReplace(job);
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
LogWatch logWatch = client.batch().v1().jobs().inNamespace(session.getNamespace())
LogWatch logWatch = client.batch().jobs().inNamespace(session.getNamespace())
.withName(job.getMetadata().getName())
.withLogWaitTimeout(30)
.watchLog(baos);
Expand All @@ -73,15 +73,15 @@ public void testCreateWithGenerateName() {
.endMetadata().build();

// When
Job jobCreated = client.batch().v1().jobs().inNamespace(session.getNamespace()).create(job);
Job jobCreated = client.batch().jobs().inNamespace(session.getNamespace()).create(job);

// Then
assertNotNull(jobCreated);
assertTrue(jobCreated.getMetadata().getName().contains("test-job-"));
assertEquals("test-job-", jobCreated.getMetadata().getGenerateName());
assertNotNull(jobCreated.getMetadata().getName());
assertNotEquals("test-job-", jobCreated.getMetadata().getName());
assertTrue(client.batch().v1().jobs().inNamespace(session.getNamespace()).withName(jobCreated.getMetadata().getName()).delete());
assertTrue(client.batch().jobs().inNamespace(session.getNamespace()).withName(jobCreated.getMetadata().getName()).delete());
}

private JobBuilder getJobBuilder() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public static void init() {
@Test
public void load() {

PodSecurityPolicy loadedPodSecurityPolicy = client.policy().v1beta1().podSecurityPolicies()
PodSecurityPolicy loadedPodSecurityPolicy = client.policy().podSecurityPolicies()
.load(getClass().getResourceAsStream("/test-podsecuritypolicy.yml")).get();

assertNotNull(loadedPodSecurityPolicy);
Expand All @@ -69,7 +69,7 @@ public void load() {

@Test
public void get() {
PodSecurityPolicy getPodSecurityPolicy = client.policy().v1beta1().podSecurityPolicies()
PodSecurityPolicy getPodSecurityPolicy = client.policy().podSecurityPolicies()
.withName("psp-get").get();
assertNotNull(getPodSecurityPolicy);
assertEquals("psp-get", getPodSecurityPolicy.getMetadata().getName());
Expand All @@ -78,7 +78,7 @@ public void get() {
@Test
public void list() {

PodSecurityPolicyList podSecurityPolicyList = client.policy().v1beta1().podSecurityPolicies()
PodSecurityPolicyList podSecurityPolicyList = client.policy().podSecurityPolicies()
.withLabels(Collections.singletonMap("foo","bar")).list();
assertNotNull(podSecurityPolicyList);
assertEquals(1,podSecurityPolicyList.getItems().size());
Expand All @@ -92,7 +92,7 @@ public void list() {
@Test
public void update(){

PodSecurityPolicy podSecurityPolicy = client.policy().v1beta1().podSecurityPolicies().withName("psp-update").edit(p -> new PodSecurityPolicyBuilder(p)
PodSecurityPolicy podSecurityPolicy = client.policy().podSecurityPolicies().withName("psp-update").edit(p -> new PodSecurityPolicyBuilder(p)
.editSpec().withPrivileged(true).endSpec()
.build());

Expand All @@ -107,7 +107,7 @@ public void update(){

@Test
public void delete(){
boolean deleted = client.policy().v1beta1().podSecurityPolicies().withName("psp-delete").delete();
boolean deleted = client.policy().podSecurityPolicies().withName("psp-delete").delete();
assertTrue(deleted);

DeleteEntity<PodSecurityPolicy> deleteEntity = new DeleteEntity<>(PodSecurityPolicy.class, client, "psp-delete", null);
Expand Down
Loading

0 comments on commit 926ba43

Please sign in to comment.