/**
* Copyright (C) 2015 Orange
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.francetelecom.clara.cloud.activation.plugin.cf.infrastructure;
import com.francetelecom.clara.cloud.activation.plugin.cf.domain.CFServiceActivationService;
import com.francetelecom.clara.cloud.activation.plugin.cf.domain.ServiceActivationStatus;
import com.francetelecom.clara.cloud.commons.TechnicalException;
import com.francetelecom.clara.cloud.techmodel.cf.UserProvidedService;
import com.francetelecom.clara.cloud.techmodel.cf.services.managed.ManagedService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class CFServiceActivationServiceDefaultImpl implements CFServiceActivationService {
private static Logger LOGGER = LoggerFactory.getLogger(CFServiceActivationServiceDefaultImpl.class.getName());
private CfAdapter cfAdapter;
@Autowired
public CFServiceActivationServiceDefaultImpl(CfAdapter cfAdapter) {
this.cfAdapter = cfAdapter;
}
@Override
public ServiceActivationStatus activate(final UserProvidedService service) {
LOGGER.info("creating cloud foundry service <" + service.getServiceName() + ">");
if (cfAdapter.serviceExists(service.getServiceName(), service.getSpace().getValue())) {
throw new ServiceAlreadyExists("a service <" + service.getServiceName() + "> already exists in space <" + service.getSpace() + ">");
}
cfAdapter.createService(service, service.getSpace().getValue());
return ServiceActivationStatus.ofService(service.getServiceName(), service.getSpace().getValue()).hasSucceeded();
}
@Override
public ServiceActivationStatus activate(final ManagedService service) {
LOGGER.info("creating cloud foundry service <" + service.getServiceInstance() + ">...");
if (cfAdapter.serviceExists(service.getServiceInstance(), service.getSpace().getValue())) {
throw new ServiceAlreadyExists("a service <" + service.getServiceInstance() + "> already exists in space <" + service.getSpace() + ">");
}
cfAdapter.createService(service, service.getSpace().getValue());
return cfAdapter.getServiceInstanceState(service.getServiceInstance(), service.getSpace().getValue());
}
@Override
public ServiceActivationStatus delete(final UserProvidedService service) {
String serviceName = service.getServiceName();
String spaceName = service.getSpace().getValue();
LOGGER.info("deleting cloud foundry service <" + serviceName + ">");
if (!cfAdapter.serviceExists(serviceName, spaceName)) {
LOGGER.warn("will not delete service<" + serviceName + ">. service<" + serviceName + "> does no exist.");
} else {
cfAdapter.deleteService(serviceName, spaceName);
}
return ServiceActivationStatus.ofService(serviceName, spaceName).hasSucceeded();
}
@Override
public ServiceActivationStatus delete(ManagedService service) {
String serviceName = service.getServiceInstance();
String spaceName = service.getSpace().getValue();
LOGGER.info("deleting cloud foundry service <{}> in space <{}>", serviceName, spaceName);
if (!cfAdapter.serviceExists(serviceName, spaceName)) {
LOGGER.warn("will not delete service<" + serviceName + ">. service<" + serviceName + "> does no exist.");
return ServiceActivationStatus.ofService(serviceName, spaceName).hasSucceeded();
} else {
cfAdapter.deleteService(serviceName, spaceName);
return cfAdapter.getServiceInstanceState(serviceName, spaceName);
}
}
@Override
public ServiceActivationStatus getServiceActivationStatus(final ServiceActivationStatus status) {
LOGGER.info("getting activation status of service <" + status.getServiceName() + "> ");
return cfAdapter.getServiceInstanceState(status.getServiceName(), status.getSpaceName());
}
public class ServiceAlreadyExists extends TechnicalException {
public ServiceAlreadyExists(String message) {
super(message);
}
}
}