package org.ovirt.engine.ui.uicommonweb.models.providers;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties;
import org.ovirt.engine.core.common.businessentities.Provider;
import org.ovirt.engine.core.common.businessentities.ProviderType;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import org.ovirt.engine.ui.uicommonweb.models.ListModel;
public class HostNetworkProviderModel extends EntityModel {
private ListModel<Provider<OpenstackNetworkProviderProperties>> networkProviders = new ListModel<>();
private ListModel<ProviderType> networkProviderType = new ListModel<>();
private NeutronAgentModel neutronAgentModel = new HostNeutronAgentModel();
public ListModel<Provider<OpenstackNetworkProviderProperties>> getNetworkProviders() {
return networkProviders;
}
public ListModel<ProviderType> getNetworkProviderType() {
return networkProviderType;
}
public ListModel<String> getProviderPluginType() {
return getNeutronAgentModel().getPluginType();
}
public NeutronAgentModel getNeutronAgentModel() {
return neutronAgentModel;
}
public EntityModel<String> getInterfaceMappings() {
return getNeutronAgentModel().getInterfaceMappings();
}
public HostNetworkProviderModel() {
getNetworkProviders().getSelectedItemChangedEvent().addListener((ev, sender, args) -> {
Provider<OpenstackNetworkProviderProperties> provider = getNetworkProviders().getSelectedItem();
getNetworkProviderType().setIsAvailable(provider != null);
getNetworkProviderType().setSelectedItem(provider == null ? null : provider.getType());
boolean isNeutron = getNetworkProviderType().getSelectedItem() == ProviderType.OPENSTACK_NETWORK;
getNeutronAgentModel().init(isNeutron && provider != null ? provider : new Provider<>());
getNeutronAgentModel().setIsAvailable(isNeutron);
});
getNetworkProviderType().setIsChangeable(false);
getNetworkProviderType().setIsAvailable(false);
getNeutronAgentModel().setIsAvailable(false);
initNetworkProvidersList();
}
private void initNetworkProvidersList() {
startProgress();
AsyncDataProvider.getInstance().getAllProvidersByType(new AsyncQuery<>(result -> {
stopProgress();
List<Provider<OpenstackNetworkProviderProperties>> providers = (List) result;
providers.add(0, null);
getNetworkProviders().setItems(providers);
getNetworkProviders().setSelectedItem(null);
}), ProviderType.OPENSTACK_NETWORK);
}
public boolean validate() {
setIsValid(getNeutronAgentModel().validate());
return getIsValid();
}
}