/// <summary> /// <para>Gets the instance of the /// <see cref="Microsoft.Hpc.Scheduler.Session.Data.DataClient" /> class that has the specified /// string identifier.</para> /// </summary> /// <param name="dataClientId"> /// <para>A /// <see cref="System.String" /> that specifies the identifier for the /// <see cref="Microsoft.Hpc.Scheduler.Session.Data.DataClient" /> object that you want to get.</para> /// </param> /// <returns> /// <para>A <see cref="Microsoft.Hpc.Scheduler.Session.Data.DataClient" /> object that has the specified identifier.</para> /// </returns> public static DataClient GetDataClient(string dataClientId) { Microsoft.Hpc.Scheduler.Session.Data.Utility.ValidateDataClientId(dataClientId); if (!inService) { throw new InvalidOperationException(SR.ServiceContextIsNotAvailable); } using (NonHARegistry registry = new NonHARegistry()) { if (registry.CheckIfNonDomain().GetAwaiter().GetResult()) { return(GetNonDomainDataClient(dataClientId)); } } if (SoaHelper.IsOnAzure()) { // if it is running in Azure, just talk to DataProxy // Note: headnode name will not be used. return(DataClient.Open("dataproxy", dataClientId)); } lock (lockDataServerInfoInitialized) { if (!bDataServerInfoInitialized) { string strDataServerInfo = Environment.GetEnvironmentVariable(Microsoft.Hpc.Scheduler.Session.Internal.Constant.SoaDataServerInfoEnvVar); if (!string.IsNullOrEmpty(strDataServerInfo)) { dataServerInfo = new DataServerInfo(strDataServerInfo); } else { logger.TraceEvent(TraceEventType.Error, 0, "[ServiceContext] .GetDataClient: no data server configured"); DataServerInfoConfigException = new DataException(DataErrorCode.NoDataServerConfigured, SR.NoDataServerConfigured); } bDataServerInfoInitialized = true; } } if (dataServerInfo != null) { string containerPath = DataContainerHelper.OpenDataContainer(dataServerInfo, dataClientId); return(new DataClient(dataClientId, containerPath, /*readOnly = */ true)); } else { throw DataServerInfoConfigException; } }
/// <summary> /// Initializes a new instance of the DataClient class /// </summary> /// <param name="dataClientId">data client id</param> /// <param name="info">data client info</param> /// <param name="readOnly">a flag indicating whether the DataClient instance is readonly or not</param> internal DataClient(string dataClientId, DataClientInfo info, bool readOnly) { this.id = dataClientId; this.isReadOnly = readOnly; if (string.IsNullOrEmpty(info.SecondaryDataPath)) { this.dataContainer = DataContainerHelper.GetDataContainer(info.PrimaryDataPath); } else { this.dataContainer = DataContainerHelper.GetDataContainer(info.PrimaryDataPath, info.SecondaryDataPath); } }
/// <summary> /// Initializes a new instance of the DataClient class /// </summary> /// <param name="dataClientId">data client id</param> /// <param name="dataStorePath">data store path</param> /// <param name="readOnly">a flag indicating whether the DataClient instance is readonly or not</param> internal DataClient(string dataClientId, string dataStorePath, bool readOnly) { this.id = dataClientId; this.isReadOnly = readOnly; this.dataContainer = DataContainerHelper.GetDataContainer(dataStorePath); }