package io.cattle.platform.process.network; import static io.cattle.platform.core.model.tables.NetworkTable.*; import io.cattle.platform.core.constants.NetworkConstants; import io.cattle.platform.core.constants.NetworkDriverConstants; import io.cattle.platform.core.dao.GenericResourceDao; import io.cattle.platform.core.model.Network; import io.cattle.platform.core.model.NetworkDriver; import io.cattle.platform.engine.handler.HandlerResult; import io.cattle.platform.engine.process.ProcessInstance; import io.cattle.platform.engine.process.ProcessState; import io.cattle.platform.json.JsonMapper; import io.cattle.platform.object.util.DataAccessor; import io.cattle.platform.process.base.AbstractDefaultProcessHandler; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; import javax.inject.Named; @Named public class NetworkdriverActivate extends AbstractDefaultProcessHandler { @Inject JsonMapper jsonMapper; @Inject GenericResourceDao resourceDao; @Override public HandlerResult handle(ProcessState state, ProcessInstance process) { NetworkDriver networkDriver = (NetworkDriver)state.getResource(); List<Network> created = objectManager.children(networkDriver, Network.class); Map<String, Object> network = DataAccessor.fieldMap(networkDriver, NetworkDriverConstants.FIELD_DEFAULT_NETWORK); if (created.size() > 0 || network.size() == 0) { return null; } Map<Object, Object> props = new HashMap<>(); props.putAll(network); props.put(NETWORK.ACCOUNT_ID, networkDriver.getAccountId()); props.put(NETWORK.NETWORK_DRIVER_ID, networkDriver.getId()); Map<String, Object> cniConf = DataAccessor.fieldMap(networkDriver, NetworkDriverConstants.FIELD_CNI_CONFIG); if (cniConf.size() > 0) { props.put(NETWORK.KIND, NetworkConstants.KIND_CNI); } resourceDao.createAndSchedule(Network.class, objectManager.convertToPropertiesFor(Network.class, props)); return null; } }