package org.ovirt.engine.core.bll.provider.network.openstack;
import org.apache.commons.lang.StringUtils;
import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties;
import org.ovirt.engine.core.common.businessentities.Provider;
import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet;
import org.ovirt.engine.core.common.businessentities.network.Network;
import org.ovirt.engine.core.common.errors.EngineError;
import org.ovirt.engine.core.common.errors.EngineException;
import com.woorea.openstack.base.client.OpenStackTokenProvider;
import com.woorea.openstack.quantum.Quantum;
public class ExternalNetworkProviderProxy extends BaseNetworkProviderProxy<OpenstackNetworkProviderProperties> {
public ExternalNetworkProviderProxy(Provider<OpenstackNetworkProviderProperties> provider) {
super(provider);
}
@Override
protected void setClientTokenProvider(Quantum client) {
if (StringUtils.isEmpty(getProvider().getAdditionalProperties().getTenantName())) {
OpenStackTokenProvider tokenProvider = new ExternalNetworkTokenProvider(getProvider());
client.setTokenProvider(tokenProvider);
} else {
super.setClientTokenProvider(client);
}
}
@Override
public String add(Network network) {
testProviderIsNotReadOnly();
return super.add(network);
}
@Override
public void remove(String id) {
testProviderIsNotReadOnly();
super.remove(id);
}
@Override
public void addSubnet(ExternalSubnet subnet) {
testProviderIsNotReadOnly();
super.addSubnet(subnet);
}
@Override
public void removeSubnet(String id) {
testProviderIsNotReadOnly();
super.removeSubnet(id);
}
private boolean isReadOnly(){
return getProvider().getAdditionalProperties().getReadOnly();
}
private void testProviderIsNotReadOnly() {
if (isReadOnly()){
throw new EngineException(EngineError.NO_IMPLEMENTATION);
}
}
}