All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.openshift.internal.restclient.model.Route Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2015 Red Hat, Inc. Distributed under license by Red Hat, Inc.
 * All rights reserved. This program is made available under the terms of the
 * Eclipse Public License v1.0 which accompanies this distribution, and is
 * available at http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: Red Hat, Inc.
 ******************************************************************************/
package com.openshift.internal.restclient.model;

import java.util.Map;

import org.jboss.dmr.ModelNode;

import com.openshift.restclient.IClient;
import com.openshift.restclient.ResourceKind;
import com.openshift.restclient.model.route.IRoute;
import com.openshift.restclient.model.route.ITLSConfig;

/**
 * @author Jeff Cantrill
 */
public class Route extends KubernetesResource implements IRoute {
	
	private static final String ROUTE_HOST = "spec.host";
	private static final String ROUTE_PATH = "spec.path";
	private static final String ROUTE_KIND = "spec.to.kind";
	private static final String ROUTE_SERVICE_NAME = "spec.to.name";
	private static final String ROUTE_TLS = "spec.tls";
	private static final String ROUTE_TLS_TERMINATION_TYPE = "spec.tls.termination";
	private static final String ROUTE_TLS_CERTIFICATE = "spec.tls.certificate";
	private static final String ROUTE_TLS_KEY = "spec.tls.key";
	private static final String ROUTE_TLS_CACERT = "spec.tls.caCertificate";
	private static final String ROUTE_TLS_DESTINATION_CACERT = "spec.tls.destinationCACertificate";

	public Route(ModelNode node, IClient client,
			Map propertyKeys) {
		super(node, client, propertyKeys);
	}

	@Override
	public String getHost() {
		return asString(ROUTE_HOST);
	}

	@Override
	public void setHost(String host) {
		get(ROUTE_HOST).set(host);
	}

	@Override
	public String getPath() {
		return asString(ROUTE_PATH);
	}

	@Override
	public void setPath(String path) {
		get(ROUTE_PATH).set(path);
	}

	@Override
	public String getServiceName() {
		return asString(ROUTE_SERVICE_NAME);
	}

	@Override
	public void setServiceName(String serviceName) {
		get(ROUTE_SERVICE_NAME).set(serviceName);
		get(ROUTE_KIND).set(ResourceKind.SERVICE);
	}

	@Override
	public ITLSConfig getTLSConfig() {
		if(get(ROUTE_TLS).isDefined()){
			return new TLSConfig();
		}
		return null;
	}
	
	@Override
	public String getURL() {
		String scheme = getTLSConfig() == null ? "http" : "https";
		String path = getPath();
		if(!path.startsWith("/")) {
			path = "/" + path;
		}
		return String.format("%s://%s%s", scheme, getHost(), path);
	}



	private class TLSConfig implements ITLSConfig {

		@Override
		public String getTerminationType() {
			return asString(ROUTE_TLS_TERMINATION_TYPE);
		}

		@Override
		public void setTerminationType(String type) {
			get(ROUTE_TLS_TERMINATION_TYPE).set(type);
		}

		@Override
		public String getCertificate() {
			return asString(ROUTE_TLS_CERTIFICATE);
		}

		@Override
		public void setCertificate(String certificate) {
			get(ROUTE_TLS_CERTIFICATE).set(certificate);
		}

		@Override
		public String getKey() {
			return asString(ROUTE_TLS_KEY);
		}

		@Override
		public void setKey(String key) {
			get(ROUTE_TLS_KEY).set(key);
		}

		@Override
		public String getCACertificate() {
			return asString(ROUTE_TLS_CACERT);
		}

		@Override
		public void setCACertificate(String caCertificate) {
			get(ROUTE_TLS_CACERT).set(caCertificate);
		}

		@Override
		public String getDestinationCertificate() {
			return asString(ROUTE_TLS_DESTINATION_CACERT);
		}

		@Override
		public void setDestinationCertificate(String destinationCertificate) {
			get(ROUTE_TLS_DESTINATION_CACERT).set(destinationCertificate);
		}

	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy