/*
* 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.ignite.internal.visor.node;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.configuration.BinaryConfiguration;
import org.apache.ignite.configuration.HadoopConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.OdbcConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorDataTransferObject;
import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactArray;
import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactClass;
/**
* Data transfer object for node configuration data.
*/
public class VisorGridConfiguration extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
/** Basic. */
private VisorBasicConfiguration basic;
/** Metrics. */
private VisorMetricsConfiguration metrics;
/** SPIs. */
private VisorSpisConfiguration spis;
/** P2P. */
private VisorPeerToPeerConfiguration p2p;
/** Lifecycle. */
private VisorLifecycleConfiguration lifecycle;
/** Executors service configuration. */
private VisorExecutorServiceConfiguration execSvc;
/** Segmentation. */
private VisorSegmentationConfiguration seg;
/** Include properties. */
private String inclProps;
/** Include events types. */
private int[] inclEvtTypes;
/** REST configuration. */
private VisorRestConfiguration rest;
/** User attributes. */
private Map<String, ?> userAttrs;
/** IGFSs. */
private List<VisorIgfsConfiguration> igfss;
/** Environment. */
private Map<String, String> env;
/** System properties. */
private Properties sysProps;
/** Configuration of atomic data structures. */
private VisorAtomicConfiguration atomic;
/** Transactions configuration. */
private VisorTransactionConfiguration txCfg;
/** Database configuration. */
private VisorMemoryConfiguration memCfg;
/** Cache store session listeners. */
private String storeSesLsnrs;
/** Warmup closure. Will be invoked before actual grid start. */
private String warmupClos;
/** Binary configuration. */
private VisorBinaryConfiguration binaryCfg;
/** List of cache key configurations. */
private List<VisorCacheKeyConfiguration> cacheKeyCfgs;
/** Hadoop configuration. */
private VisorHadoopConfiguration hadoopCfg;
/** ODBC configuration. */
private VisorOdbcConfiguration odbcCfg;
/** List of service configurations. */
private List<VisorServiceConfiguration> srvcCfgs;
/**
* Default constructor.
*/
public VisorGridConfiguration() {
// No-op.
}
/**
* Create data transfer object with node configuration data.
*
* @param ignite Grid.
*/
public VisorGridConfiguration(IgniteEx ignite) {
assert ignite != null;
IgniteConfiguration c = ignite.configuration();
basic = new VisorBasicConfiguration(ignite, c);
metrics = new VisorMetricsConfiguration(c);
spis = new VisorSpisConfiguration(c);
p2p = new VisorPeerToPeerConfiguration(c);
lifecycle = new VisorLifecycleConfiguration(c);
execSvc = new VisorExecutorServiceConfiguration(c);
seg = new VisorSegmentationConfiguration(c);
inclProps = compactArray(c.getIncludeProperties());
inclEvtTypes = c.getIncludeEventTypes();
rest = new VisorRestConfiguration(c);
userAttrs = c.getUserAttributes();
igfss = VisorIgfsConfiguration.list(c.getFileSystemConfiguration());
env = new HashMap<>(System.getenv());
sysProps = IgniteSystemProperties.snapshot();
atomic = new VisorAtomicConfiguration(c.getAtomicConfiguration());
txCfg = new VisorTransactionConfiguration(c.getTransactionConfiguration());
if (c.getMemoryConfiguration() != null)
memCfg = new VisorMemoryConfiguration(c.getMemoryConfiguration());
storeSesLsnrs = compactArray(c.getCacheStoreSessionListenerFactories());
warmupClos = compactClass(c.getWarmupClosure());
BinaryConfiguration bc = c.getBinaryConfiguration();
if (bc != null)
binaryCfg = new VisorBinaryConfiguration();
cacheKeyCfgs = VisorCacheKeyConfiguration.list(c.getCacheKeyConfiguration());
HadoopConfiguration hc = c.getHadoopConfiguration();
if (hc != null)
hadoopCfg = new VisorHadoopConfiguration(hc);
OdbcConfiguration oc = c.getOdbcConfiguration();
if (oc != null)
odbcCfg = new VisorOdbcConfiguration(c.getOdbcConfiguration());
srvcCfgs = VisorServiceConfiguration.list(c.getServiceConfiguration());
}
/**
* @return Basic.
*/
public VisorBasicConfiguration getBasic() {
return basic;
}
/**
* @return Metrics.
*/
public VisorMetricsConfiguration getMetrics() {
return metrics;
}
/**
* @return SPIs.
*/
public VisorSpisConfiguration getSpis() {
return spis;
}
/**
* @return P2P.
*/
public VisorPeerToPeerConfiguration getP2p() {
return p2p;
}
/**
* @return Lifecycle.
*/
public VisorLifecycleConfiguration getLifecycle() {
return lifecycle;
}
/**
* @return Executors service configuration.
*/
public VisorExecutorServiceConfiguration getExecutorService() {
return execSvc;
}
/**
* @return Segmentation.
*/
public VisorSegmentationConfiguration getSegmentation() {
return seg;
}
/**
* @return Include properties.
*/
public String getIncludeProperties() {
return inclProps;
}
/**
* @return Include events types.
*/
public int[] getIncludeEventTypes() {
return inclEvtTypes;
}
/**
* @return Rest.
*/
public VisorRestConfiguration getRest() {
return rest;
}
/**
* @return User attributes.
*/
public Map<String, ?> getUserAttributes() {
return userAttrs;
}
/**
* @return Igfss.
*/
public List<VisorIgfsConfiguration> getIgfss() {
return igfss;
}
/**
* @return Environment.
*/
public Map<String, String> getEnv() {
return env;
}
/**
* @return System properties.
*/
public Properties getSystemProperties() {
return sysProps;
}
/**
* @return Configuration of atomic data structures.
*/
public VisorAtomicConfiguration getAtomic() {
return atomic;
}
/**
* @return Transactions configuration.
*/
public VisorTransactionConfiguration getTransaction() {
return txCfg;
}
/**
* @return Memory configuration.
*/
public VisorMemoryConfiguration getMemoryConfiguration() {
return memCfg;
}
/**
* @return Cache store session listener factories.
*/
public String getCacheStoreSessionListenerFactories() {
return storeSesLsnrs;
}
/**
* @return Warmup closure to execute.
*/
public String getWarmupClosure() {
return warmupClos;
}
/**
* @return Binary configuration.
*/
public VisorBinaryConfiguration getBinaryConfiguration() {
return binaryCfg;
}
/**
* @return List of cache key configurations.
*/
public List<VisorCacheKeyConfiguration> getCacheKeyConfigurations() {
return cacheKeyCfgs;
}
/**
* @return Hadoop configuration.
*/
public VisorHadoopConfiguration getHadoopConfiguration() {
return hadoopCfg;
}
/**
* @return ODBC configuration.
*/
public VisorOdbcConfiguration getOdbcConfiguration() {
return odbcCfg;
}
/**
* @return List of service configurations
*/
public List<VisorServiceConfiguration> getServiceConfigurations() {
return srvcCfgs;
}
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
out.writeObject(basic);
out.writeObject(metrics);
out.writeObject(spis);
out.writeObject(p2p);
out.writeObject(lifecycle);
out.writeObject(execSvc);
out.writeObject(seg);
U.writeString(out, inclProps);
out.writeObject(inclEvtTypes);
out.writeObject(rest);
U.writeMap(out, userAttrs);
U.writeCollection(out, igfss);
U.writeMap(out, env);
out.writeObject(sysProps);
out.writeObject(atomic);
out.writeObject(txCfg);
out.writeObject(memCfg);
U.writeString(out, storeSesLsnrs);
U.writeString(out, warmupClos);
out.writeObject(binaryCfg);
U.writeCollection(out, cacheKeyCfgs);
out.writeObject(hadoopCfg);
out.writeObject(odbcCfg);
U.writeCollection(out, srvcCfgs);
}
/** {@inheritDoc} */
@Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
basic = (VisorBasicConfiguration)in.readObject();
metrics = (VisorMetricsConfiguration)in.readObject();
spis = (VisorSpisConfiguration)in.readObject();
p2p = (VisorPeerToPeerConfiguration)in.readObject();
lifecycle = (VisorLifecycleConfiguration)in.readObject();
execSvc = (VisorExecutorServiceConfiguration)in.readObject();
seg = (VisorSegmentationConfiguration)in.readObject();
inclProps = U.readString(in);
inclEvtTypes = (int[])in.readObject();
rest = (VisorRestConfiguration)in.readObject();
userAttrs = U.readMap(in);
igfss = U.readList(in);
env = U.readMap(in);
sysProps = (Properties)in.readObject();
atomic = (VisorAtomicConfiguration)in.readObject();
txCfg = (VisorTransactionConfiguration)in.readObject();
memCfg = (VisorMemoryConfiguration)in.readObject();
storeSesLsnrs = U.readString(in);
warmupClos = U.readString(in);
binaryCfg = (VisorBinaryConfiguration)in.readObject();
cacheKeyCfgs = U.readList(in);
hadoopCfg = (VisorHadoopConfiguration)in.readObject();
odbcCfg = (VisorOdbcConfiguration)in.readObject();
srvcCfgs = U.readList(in);
}
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(VisorGridConfiguration.class, this);
}
}