package io.cattle.platform.sample.data;
import static io.cattle.platform.core.model.tables.DynamicSchemaRoleTable.*;
import static io.cattle.platform.core.model.tables.DynamicSchemaTable.*;
import static io.cattle.platform.core.model.tables.MachineDriverTable.*;
import io.cattle.platform.archaius.util.ArchaiusUtil;
import io.cattle.platform.core.constants.CommonStatesConstants;
import io.cattle.platform.core.constants.MachineDriverConstants;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.core.model.MachineDriver;
import io.cattle.platform.object.meta.ObjectMetaDataManager;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.inject.Inject;
import org.jooq.Configuration;
import org.jooq.DSLContext;
import org.jooq.impl.DefaultDSLContext;
import com.netflix.config.DynamicStringListProperty;
public class SampleDataStartupV10 extends AbstractSampleData {
@Inject
Configuration configuration;
private static final DynamicStringListProperty DRIVERS = ArchaiusUtil.getList("machine.drivers.default");
protected DSLContext create() {
return new DefaultDSLContext(configuration);
}
@Override
protected String getName() {
return "sampleDataVersion10";
}
@Override
protected void populatedData(Account system, List<Object> toCreate) {
create().delete(DYNAMIC_SCHEMA_ROLE).execute();
create().delete(DYNAMIC_SCHEMA).execute();
create().delete(MACHINE_DRIVER).where(
MACHINE_DRIVER.STATE.ne(CommonStatesConstants.ACTIVE)).execute();
Set<String> existing = new HashSet<>();
for (MachineDriver md : objectManager.find(MachineDriver.class, ObjectMetaDataManager.STATE_FIELD, CommonStatesConstants.ACTIVE)) {
existing.add(md.getName());
objectManager.setFields(md,
ObjectMetaDataManager.STATE_FIELD, CommonStatesConstants.INACTIVE,
MachineDriverConstants.FIELD_DEFAULT_ACTIVE, true,
MachineDriverConstants.FIELD_CHECKSUM, md.getMd5checksum(),
MachineDriverConstants.FIELD_URL, md.getUri());
}
for (String name : DRIVERS.get()) {
if (existing.contains(name)) {
continue;
}
List<String> values = ArchaiusUtil.getList(String.format("machine.driver.%s", name)).get();
String activate = values.get(0);
String url = values.get(1);
String checksum = "";
if (values.size() > 2) {
checksum = values.get(2);
}
String uuid = Long.toString((url+checksum+name).hashCode());
boolean activateDefault = Boolean.parseBoolean(activate);
boolean builtin = url.equals("local://");
createByUuid(MachineDriver.class, uuid,
MACHINE_DRIVER.KIND, MachineDriverConstants.TYPE,
ObjectMetaDataManager.NAME_FIELD, name,
MachineDriverConstants.FIELD_BUILTIN, builtin,
MachineDriverConstants.FIELD_CHECKSUM, checksum,
MachineDriverConstants.FIELD_URL, url,
MachineDriverConstants.FIELD_DEFAULT_ACTIVE, activateDefault,
MACHINE_DRIVER.STATE, CommonStatesConstants.INACTIVE);
}
}
}