use of oracle.kubernetes.weblogic.domain.v1.Domain in project weblogic-kubernetes-operator by oracle.
the class HealthCheckHelper method verifyPersistentVolume.
/**
* Verify a persistent volume exists for a domain and the permissions are correct.
*
* @throws ApiException exception for k8s API
*/
private void verifyPersistentVolume(HashMap<String, Domain> domainUIDMap) throws ApiException {
CallBuilderFactory factory = ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
V1PersistentVolumeList pvList = factory.create().listPersistentVolume();
for (Domain domain : domainUIDMap.values()) {
LOGGER.finest(MessageKeys.WEBLOGIC_DOMAIN, domain.toString());
String domainUID = domain.getSpec().getDomainUID();
boolean foundLabel = false;
for (V1PersistentVolume pv : pvList.getItems()) {
Map<String, String> labels = pv.getMetadata().getLabels();
if (labels != null && labels.get(DOMAIN_UID_LABEL) != null && labels.get(DOMAIN_UID_LABEL).equals(domainUID)) {
foundLabel = true;
List<String> accessModes = pv.getSpec().getAccessModes();
boolean foundAccessMode = false;
for (String accessMode : accessModes) {
if (accessMode.equals(READ_WRITE_MANY_ACCESS)) {
foundAccessMode = true;
break;
}
}
// Persistent volume does not have ReadWriteMany access mode,
if (!foundAccessMode) {
logHealthCheckEvent(MessageKeys.PV_ACCESS_MODE_FAILED, pv.getMetadata().getName(), domain.getMetadata().getName(), domainUID, READ_WRITE_MANY_ACCESS);
}
// TODO: Should we verify the claim, also?
}
}
// Persistent volume for domain UID not found
if (!foundLabel) {
logHealthCheckEvent(MessageKeys.PV_NOT_FOUND_FOR_DOMAIN_UID, domain.getMetadata().getName(), domainUID);
}
}
}
use of oracle.kubernetes.weblogic.domain.v1.Domain in project weblogic-kubernetes-operator by oracle.
the class PodHelperConfigTest method getActualAdminServerPodConfigForServerStartupAndDefaults.
private V1Pod getActualAdminServerPodConfigForServerStartupAndDefaults() throws Exception {
// default image & default image pull policy
Domain domain = getDomainCustomResourceForDefaults(null, null);
domain.getSpec().withServerStartup(newTestServersStartupList());
// no pvc
return getActualAdminServerPodConfig(domain, newPersistentVolumeClaimList());
}
use of oracle.kubernetes.weblogic.domain.v1.Domain in project weblogic-kubernetes-operator by oracle.
the class PodHelperConfigTest method getDomainCustomResourceForDefaults.
private Domain getDomainCustomResourceForDefaults(String image, String imagePullPolicy) {
DomainSpec spec = newDomainSpec();
spec.setDomainUID(DOMAIN_UID);
spec.setDomainName(DOMAIN_NAME);
spec.setAsName(ADMIN_SERVER_NAME);
spec.setAdminSecret(newSecretReference().name(WEBLOGIC_CREDENTIALS_SECRET_NAME));
spec.setAsPort(ADMIN_SERVER_PORT);
if (image != null) {
spec.setImage(image);
}
if (imagePullPolicy != null) {
spec.setImagePullPolicy(imagePullPolicy);
}
Domain domain = new Domain();
domain.setMetadata(newObjectMeta().namespace(NAMESPACE));
domain.setSpec(spec);
return domain;
}
use of oracle.kubernetes.weblogic.domain.v1.Domain in project weblogic-kubernetes-operator by oracle.
the class RestBackendImpl method updateReplicasForDomain.
private void updateReplicasForDomain(String namespace, Domain domain, String cluster, int managedServerCount) {
// Capacity of configured cluster is valid for scaling
// Set replicas value on corresponding ClusterStartup (if defined)
// or on the Domain level replicas value for cluster not defined in a ClusterStartup
String domainUID = domain.getSpec().getDomainUID();
boolean domainModified = false;
ClusterStartup clusterStartup = getClusterStartup(domain, cluster);
int currentReplicasCount = clusterStartup != null ? clusterStartup.getReplicas() : domain.getSpec().getReplicas();
if (managedServerCount != currentReplicasCount) {
if (clusterStartup != null) {
// set replica value on corresponding ClusterStartup
clusterStartup.setReplicas(managedServerCount);
domainModified = true;
} else if (StartupControlConstants.AUTO_STARTUPCONTROL.equals(domain.getSpec().getStartupControl())) {
// set replica on Domain for cluster not defined in ClusterStartup
domain.getSpec().setReplicas(managedServerCount);
domainModified = true;
} else {
// so scaling will not occur since Domain.spec.Replicas property will be ignored.
throw createWebApplicationException(Status.BAD_REQUEST, MessageKeys.SCALING_AUTO_CONTROL_AUTO, cluster);
}
}
if (domainModified) {
try {
CallBuilderFactory factory = ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
// Write out the Domain with updated replica values
// TODO: Can we patch instead of replace?
factory.create().replaceDomain(domainUID, namespace, domain);
} catch (ApiException e) {
LOGGER.finer("Unexpected exception when updating Domain " + domainUID + " in namespace " + namespace, e);
throw new WebApplicationException(e.getMessage());
}
}
}
use of oracle.kubernetes.weblogic.domain.v1.Domain in project weblogic-kubernetes-operator by oracle.
the class WatchBuilderTest method whenDomainWatchReceivesModifyAndDeleteResponses_returnBothFromIterator.
@SuppressWarnings("unchecked")
@Test
public void whenDomainWatchReceivesModifyAndDeleteResponses_returnBothFromIterator() throws Exception {
Domain domain1 = new Domain().withApiVersion(API_VERSION).withKind("Domain").withMetadata(createMetaData("domain1", NAMESPACE));
Domain domain2 = new Domain().withApiVersion(API_VERSION).withKind("Domain").withMetadata(createMetaData("domain2", NAMESPACE));
defineHttpResponse(DOMAIN_RESOURCE, withResponses(createModifiedResponse(domain1), createDeletedResponse(domain2)));
WatchI<Domain> domainWatch = new WatchBuilder().createDomainWatch(NAMESPACE);
assertThat(domainWatch, contains(modifyEvent(domain1), deleteEvent(domain2)));
}
Aggregations