/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.ambari.server.serveraction.kerberos; import java.io.File; import java.io.IOException; import java.util.Arrays; /** * KerberosIdentityDataFileWriter is an implementation of an AbstractKerberosDataFileWriter that * is used to create a new Kerberos identity data file. * <p/> * This class encapsulates a {@link org.apache.commons.csv.CSVPrinter} to create a CSV-formatted file. */ public class KerberosIdentityDataFileWriter extends AbstractKerberosDataFileWriter implements KerberosIdentityDataFile { /** * Creates a new KerberosIdentityDataFileWriter * <p/> * The file is opened upon creation, so there is no need to manually open it unless manually * closed before using. * * @param file a File declaring where to write the data * @throws IOException */ KerberosIdentityDataFileWriter(File file) throws IOException { super(file); } /** * Appends a new record to the data file * * @param hostName a String containing the hostname column data * @param serviceName a String containing the service name column data * @param serviceComponentName a String containing the component name column data * @param principal a String containing the (raw, non-evaluated) principal "pattern" * column data * @param principalType a String declaring the principal type - expecting "service" or "user" * @param keytabFilePath a String containing the destination keytab file path column data * @param keytabFileOwnerName a String containing the keytab file owner name column data * @param keytabFileOwnerAccess a String containing the keytab file owner access column data * (expected to be "r" or "rw") * @param keytabFileGroupName a String containing the keytab file group name column data * @param keytabFileGroupAccess a String containing the keytab file group access column data * (expected to be "r", "rw", or "") * @param keytabFileCanCache a String containing a boolean value (true, false) indicating * whether the generated keytab can be cached or not * @throws IOException */ public void writeRecord(String hostName, String serviceName, String serviceComponentName, String principal, String principalType, String keytabFilePath, String keytabFileOwnerName, String keytabFileOwnerAccess, String keytabFileGroupName, String keytabFileGroupAccess, String keytabFileCanCache) throws IOException { super.appendRecord(hostName, serviceName, serviceComponentName, principal, principalType, keytabFilePath, keytabFileOwnerName, keytabFileOwnerAccess, keytabFileGroupName, keytabFileGroupAccess, keytabFileCanCache); } @Override protected Iterable<String> getHeaderRecord() { return Arrays.asList(HOSTNAME, SERVICE, COMPONENT, PRINCIPAL, PRINCIPAL_TYPE, KEYTAB_FILE_PATH, KEYTAB_FILE_OWNER_NAME, KEYTAB_FILE_OWNER_ACCESS, KEYTAB_FILE_GROUP_NAME, KEYTAB_FILE_GROUP_ACCESS, KEYTAB_FILE_IS_CACHABLE); } }