io.alauda.kubernetes.api.model.NodeSpecFluentImpl Maven / Gradle / Ivy
package io.alauda.kubernetes.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.alauda.kubernetes.api.builder.Nested;
import java.util.ArrayList;
import java.lang.String;
import io.alauda.kubernetes.api.builder.Predicate;
import java.lang.Deprecated;
import javax.validation.Valid;
import io.alauda.kubernetes.api.builder.BaseFluent;
import java.util.Collection;
import java.lang.Object;
import java.util.List;
import java.lang.Boolean;
public class NodeSpecFluentImpl> extends io.alauda.kubernetes.api.builder.BaseFluent implements NodeSpecFluent{
private String externalID;
private String podCIDR;
private String providerID;
private List taints = new ArrayList();
private Boolean unschedulable;
public NodeSpecFluentImpl(){
}
public NodeSpecFluentImpl(NodeSpec instance){
this.withExternalID(instance.getExternalID());
this.withPodCIDR(instance.getPodCIDR());
this.withProviderID(instance.getProviderID());
this.withTaints(instance.getTaints());
this.withUnschedulable(instance.getUnschedulable());
}
public String getExternalID(){
return this.externalID;
}
public A withExternalID(String externalID){
this.externalID=externalID; return (A) this;
}
public Boolean hasExternalID(){
return this.externalID!=null;
}
public String getPodCIDR(){
return this.podCIDR;
}
public A withPodCIDR(String podCIDR){
this.podCIDR=podCIDR; return (A) this;
}
public Boolean hasPodCIDR(){
return this.podCIDR!=null;
}
public String getProviderID(){
return this.providerID;
}
public A withProviderID(String providerID){
this.providerID=providerID; return (A) this;
}
public Boolean hasProviderID(){
return this.providerID!=null;
}
public A addToTaints(int index,Taint item){
TaintBuilder builder = new TaintBuilder(item);_visitables.add(index >= 0 ? index : _visitables.size(), builder);this.taints.add(index >= 0 ? index : taints.size(), builder); return (A)this;
}
public A setToTaints(int index,Taint item){
TaintBuilder builder = new TaintBuilder(item);
if (index < 0 || index >= _visitables.size()) { _visitables.add(builder); } else { _visitables.set(index, builder);}
if (index < 0 || index >= taints.size()) { taints.add(builder); } else { taints.set(index, builder);}
return (A)this;
}
public A addToTaints(Taint... items){
for (Taint item : items) {TaintBuilder builder = new TaintBuilder(item);_visitables.add(builder);this.taints.add(builder);} return (A)this;
}
public A addAllToTaints(Collection items){
for (Taint item : items) {TaintBuilder builder = new TaintBuilder(item);_visitables.add(builder);this.taints.add(builder);} return (A)this;
}
public A removeFromTaints(Taint... items){
for (Taint item : items) {TaintBuilder builder = new TaintBuilder(item);_visitables.remove(builder);this.taints.remove(builder);} return (A)this;
}
public A removeAllFromTaints(Collection items){
for (Taint item : items) {TaintBuilder builder = new TaintBuilder(item);_visitables.remove(builder);this.taints.remove(builder);} return (A)this;
}
/**
* This method has been deprecated, please use method buildTaints instead.
*/
@Deprecated public List getTaints(){
return build(taints);
}
public List buildTaints(){
return build(taints);
}
public Taint buildTaint(int index){
return this.taints.get(index).build();
}
public Taint buildFirstTaint(){
return this.taints.get(0).build();
}
public Taint buildLastTaint(){
return this.taints.get(taints.size() - 1).build();
}
public Taint buildMatchingTaint(io.alauda.kubernetes.api.builder.Predicate predicate){
for (TaintBuilder item: taints) { if(predicate.apply(item)){return item.build();} } return null;
}
public A withTaints(List taints){
_visitables.removeAll(this.taints);
this.taints.clear();
if (taints != null) {for (Taint item : taints){this.addToTaints(item);}} return (A) this;
}
public A withTaints(Taint... taints){
this.taints.clear(); if (taints != null) {for (Taint item :taints){ this.addToTaints(item);}} return (A) this;
}
public Boolean hasTaints(){
return taints!= null && !taints.isEmpty();
}
public NodeSpecFluent.TaintsNested addNewTaint(){
return new TaintsNestedImpl();
}
public NodeSpecFluent.TaintsNested addNewTaintLike(Taint item){
return new TaintsNestedImpl(-1, item);
}
public NodeSpecFluent.TaintsNested setNewTaintLike(int index,Taint item){
return new TaintsNestedImpl(index, item);
}
public NodeSpecFluent.TaintsNested editTaint(int index){
if (taints.size() <= index) throw new RuntimeException("Can't edit taints. Index exceeds size.");
return setNewTaintLike(index, buildTaint(index));
}
public NodeSpecFluent.TaintsNested editFirstTaint(){
if (taints.size() == 0) throw new RuntimeException("Can't edit first taints. The list is empty.");
return setNewTaintLike(0, buildTaint(0));
}
public NodeSpecFluent.TaintsNested editLastTaint(){
int index = taints.size() - 1;
if (index < 0) throw new RuntimeException("Can't edit last taints. The list is empty.");
return setNewTaintLike(index, buildTaint(index));
}
public NodeSpecFluent.TaintsNested editMatchingTaint(io.alauda.kubernetes.api.builder.Predicate predicate){
int index = -1;
for (int i=0;i extends TaintFluentImpl> implements NodeSpecFluent.TaintsNested,io.alauda.kubernetes.api.builder.Nested{
private final TaintBuilder builder;
private final int index;
TaintsNestedImpl(int index,Taint item){
this.index = index;
this.builder = new TaintBuilder(this, item);
}
TaintsNestedImpl(){
this.index = -1;
this.builder = new TaintBuilder(this);
}
public N and(){
return (N) NodeSpecFluentImpl.this.setToTaints(index, builder.build());
}
public N endTaint(){
return and();
}
}
}