#
# Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#


# __NAME__.properties
#
# Created on __DATE

#SERVICE_NAME refers to the name of domain or node agent
SERVICE_NAME=domain1
SERVICE_LOCATION=FILL_THE_LOCATION_WHERE_DOMAIN_CONFIGURATION_RESIDES
#SERVICE_TYPE has to be either "Domain" or "NodeAgent" and nothing else
SERVICE_TYPE=Domain
OS_USER=root
AS_ADMIN_PATH=FILL_THE_ASADMIN_LOCATION
PASSWORD_FILE_PATH=FILL_THE_PASSWORD_FILE_LOCATION

