Search in sources :

Example 16 with Domain

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);
        }
    }
}
Also used : V1PersistentVolume(io.kubernetes.client.models.V1PersistentVolume) Domain(oracle.kubernetes.weblogic.domain.v1.Domain) V1PersistentVolumeList(io.kubernetes.client.models.V1PersistentVolumeList)

Example 17 with Domain

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());
}
Also used : Domain(oracle.kubernetes.weblogic.domain.v1.Domain)

Example 18 with Domain

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;
}
Also used : DomainSpec(oracle.kubernetes.weblogic.domain.v1.DomainSpec) Domain(oracle.kubernetes.weblogic.domain.v1.Domain)

Example 19 with 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());
        }
    }
}
Also used : ClusterStartup(oracle.kubernetes.weblogic.domain.v1.ClusterStartup) WebApplicationException(javax.ws.rs.WebApplicationException) CallBuilderFactory(oracle.kubernetes.operator.helpers.CallBuilderFactory) ApiException(io.kubernetes.client.ApiException)

Example 20 with Domain

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)));
}
Also used : Domain(oracle.kubernetes.weblogic.domain.v1.Domain) HttpUserAgentTest(com.meterware.pseudoserver.HttpUserAgentTest) Test(org.junit.Test)

Aggregations

Domain (oracle.kubernetes.weblogic.domain.v1.Domain)33 Type (java.lang.reflect.Type)18 DomainSpec (oracle.kubernetes.weblogic.domain.v1.DomainSpec)11 ProgressRequestBody (io.kubernetes.client.ProgressRequestBody)9 ProgressResponseBody (io.kubernetes.client.ProgressResponseBody)9 DomainList (oracle.kubernetes.weblogic.domain.v1.DomainList)7 Domain (org.openstack4j.model.identity.v3.Domain)7 V1ObjectMeta (io.kubernetes.client.models.V1ObjectMeta)5 ArrayList (java.util.ArrayList)5 CallBuilderFactory (oracle.kubernetes.operator.helpers.CallBuilderFactory)5 ClusterStartup (oracle.kubernetes.weblogic.domain.v1.ClusterStartup)5 Test (org.junit.Test)5 ApiException (io.kubernetes.client.ApiException)4 Map (java.util.Map)4 V1Service (io.kubernetes.client.models.V1Service)3 HashMap (java.util.HashMap)3 WlsServerConfig (oracle.kubernetes.operator.wlsconfig.WlsServerConfig)3 Packet (oracle.kubernetes.operator.work.Packet)3 HttpUserAgentTest (com.meterware.pseudoserver.HttpUserAgentTest)2 V1ConfigMap (io.kubernetes.client.models.V1ConfigMap)2