/* * Copyright (C) 2013 Intel Corporation * All rights reserved. */ package com.intel.mtwilson.tag.setup.cmd; import com.intel.mtwilson.tag.setup.TagCommand; import com.intel.dcsg.cpg.io.UUID; import com.intel.mtwilson.tag.dao.TagJdbi; import com.intel.mtwilson.tag.dao.jdbi.KvAttributeDAO; import com.intel.mtwilson.tag.dao.jdbi.SelectionDAO; import com.intel.mtwilson.tag.dao.jdbi.SelectionKvAttributeDAO; import com.intel.mtwilson.tag.dao.jdbi.ConfigurationDAO; import com.intel.mtwilson.tag.dao.jdbi.TpmPasswordDAO; import com.intel.mtwilson.tag.model.*; import java.io.IOException; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.configuration.MapConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This command creates a default "main" configuration * * @author jbuhacoff */ public class TagInitDatabase extends TagCommand { private static Logger log = LoggerFactory.getLogger(TagInitDatabase.class); @Override public void execute(String[] args) throws Exception { insertMainConfiguration(); } public void insertMainConfiguration() throws SQLException, IOException { try (ConfigurationDAO configurationDao = TagJdbi.configurationDao(); KvAttributeDAO kvAttrDao = TagJdbi.kvAttributeDao(); SelectionDAO selectionDao = TagJdbi.selectionDao(); SelectionKvAttributeDAO selectionKvAttrDao = TagJdbi.selectionKvAttributeDao(); TpmPasswordDAO tpmPasswordDao = TagJdbi.tpmPasswordDao()) { Configuration main = configurationDao.findByName("main"); if (main == null) { log.debug("Inserting sample attributes"); kvAttrDao.insert(new UUID(), "country", "US"); kvAttrDao.insert(new UUID(), "country", "CA"); kvAttrDao.insert(new UUID(), "country", "MX"); kvAttrDao.insert(new UUID(), "state", "CA"); kvAttrDao.insert(new UUID(), "state", "AZ"); kvAttrDao.insert(new UUID(), "state", "OR"); kvAttrDao.insert(new UUID(), "state", "TX"); kvAttrDao.insert(new UUID(), "state", "NY"); kvAttrDao.insert(new UUID(), "city", "Folsom"); kvAttrDao.insert(new UUID(), "city", "Santa Clara"); kvAttrDao.insert(new UUID(), "city", "Hillsboro"); kvAttrDao.insert(new UUID(), "city", "Austin"); kvAttrDao.insert(new UUID(), "city", "New York"); kvAttrDao.insert(new UUID(), "customer", "Coke"); kvAttrDao.insert(new UUID(), "customer", "Pepsi"); kvAttrDao.insert(new UUID(), "customer", "US Govt"); kvAttrDao.insert(new UUID(), "building", "Bldg 100"); kvAttrDao.insert(new UUID(), "building", "Bldg 200"); kvAttrDao.insert(new UUID(), "building", "Bldg 300"); // default tag selection log.debug("Inserting sample selections"); UUID defaultSelectionUuid = new UUID(); UUID otherSelectionUuid = new UUID(); selectionDao.insert(defaultSelectionUuid, "default", "default selections"); selectionDao.insert(otherSelectionUuid, "other", "second selection option"); KvAttribute countryAttr1 = kvAttrDao.findByNameAndValue("country", "US"); KvAttribute stateAttr1 = kvAttrDao.findByNameAndValue("state", "CA"); KvAttribute cityAttr1 = kvAttrDao.findByNameAndValue("city", "Folsom"); KvAttribute cityAttr2 = kvAttrDao.findByNameAndValue("city", "Santa Clara"); KvAttribute custAttr1 = kvAttrDao.findByNameAndValue("customer", "Coke"); KvAttribute custAttr2 = kvAttrDao.findByNameAndValue("customer", "Pepsi"); // Insert the mapping of selection and kvattribute into the database for the default selection selectionKvAttrDao.insert(new UUID(), defaultSelectionUuid, countryAttr1.getId()); selectionKvAttrDao.insert(new UUID(), defaultSelectionUuid, stateAttr1.getId()); selectionKvAttrDao.insert(new UUID(), defaultSelectionUuid, cityAttr1.getId()); selectionKvAttrDao.insert(new UUID(), defaultSelectionUuid, cityAttr2.getId()); selectionKvAttrDao.insert(new UUID(), defaultSelectionUuid, custAttr1.getId()); selectionKvAttrDao.insert(new UUID(), defaultSelectionUuid, custAttr2.getId()); // Insert the mapping of selection and kvattribute into the database for the second selection created countryAttr1 = kvAttrDao.findByNameAndValue("country", "US"); stateAttr1 = kvAttrDao.findByNameAndValue("state", "AZ"); KvAttribute stateAttr2 = kvAttrDao.findByNameAndValue("state", "OR"); KvAttribute stateAttr3 = kvAttrDao.findByNameAndValue("state", "TX"); cityAttr1 = kvAttrDao.findByNameAndValue("city", "Hillsboro"); cityAttr2 = kvAttrDao.findByNameAndValue("city", "Austin"); custAttr1 = kvAttrDao.findByNameAndValue("building", "Bldg 100"); custAttr2 = kvAttrDao.findByNameAndValue("building", "Bldg 200"); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, countryAttr1.getId()); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, stateAttr1.getId()); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, stateAttr2.getId()); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, stateAttr3.getId()); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, cityAttr1.getId()); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, cityAttr2.getId()); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, custAttr1.getId()); selectionKvAttrDao.insert(new UUID(), otherSelectionUuid, custAttr2.getId()); // tpmPasswordDao.insert(UUID.valueOf("AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"), "TPMPASSWORD"); // configuration to allow automatic tag selection & approval log.debug("Inserting default configuration"); Properties p = new Properties(); // 2014-03-22 after integration with mtwilson the properties are currently being set in mtwilson.properties so commenting out from here to prevent confusion // p.setProperty("allowTagsInCertificateRequests", "true"); // p.setProperty("allowAutomaticTagSelection", "true"); // p.setProperty("automaticTagSelectionName", defaultSelectionUuid.toString()); // p.setProperty("approveAllCertificateRequests", "true"); Configuration configuration = new Configuration(); configuration.setName("main"); configuration.setContent(p); configurationDao.insert(new UUID(), configuration.getName(), configuration.getXmlContent()); } } catch (Exception ex) { log.error("Error during initialization of the database.", ex); } } public static void main(String args[]) throws Exception { TagInitDatabase cmd = new TagInitDatabase(); cmd.setOptions(new MapConfiguration(new Properties())); cmd.execute(new String[0]); } }