diff --git a/src/Common/CustomerPortalClient.cs b/src/Common/CustomerPortalClient.cs index 0782d59..84507c4 100644 --- a/src/Common/CustomerPortalClient.cs +++ b/src/Common/CustomerPortalClient.cs @@ -11,6 +11,7 @@ using System.Xml; using System.Xml.Linq; using Cmf.CustomerPortal.BusinessObjects; +using Cmf.CustomerPortal.Common.CustomerInfrastructure; using Cmf.CustomerPortal.Orchestration.CustomerEnvironmentManagement.InputObjects; using Cmf.CustomerPortal.Orchestration.CustomerEnvironmentManagement.OutputObjects; using Cmf.Foundation.BusinessObjects; @@ -386,7 +387,7 @@ public async Task CheckCustomerEnvironmentConnectionStatus(long? definitio { CheckCustomerEnvironmentConnectionStatusOutput output = await new CheckCustomerEnvironmentConnectionStatusInput() { DefinitionId = definitionId } .CheckCustomerEnvironmentConnectionStatusAsync(); - return output.IsCustomerEnvironmentConnected; + return output.CustomerEnvironmentConnectionStatus == InfrastructureConnectionStatus.Connected; } /// @@ -401,5 +402,15 @@ public async Task CreateOrUpdateAppInstal CustomerLicenseName = customerLicenseName }.CreateOrUpdateAppInstallationAsync(true)).CustomerEnvironmentApplicationPackage; } + + + public async Task CheckStartDeploymentConnection(CustomerEnvironment customerEnvironment, CustomerInfrastructure customerInfrastructure) + { + return (await new CheckStartDeploymentConnectionInput() + { + CustomerEnvironment = customerEnvironment, + CustomerInfrastructure = customerInfrastructure + }.CheckStartDeploymentConnectionAsync(true)).CanStartDeploymentConnection; + } } } diff --git a/src/Common/Handlers/InstallAppHandler.cs b/src/Common/Handlers/InstallAppHandler.cs index 390ac1b..a8e72e7 100644 --- a/src/Common/Handlers/InstallAppHandler.cs +++ b/src/Common/Handlers/InstallAppHandler.cs @@ -1,9 +1,7 @@ -using System; using System.IO; using System.Threading.Tasks; using Cmf.CustomerPortal.BusinessObjects; using Cmf.CustomerPortal.Sdk.Common.Services; -using Cmf.LightBusinessObjects.Infrastructure.Errors; namespace Cmf.CustomerPortal.Sdk.Common.Handlers { @@ -32,14 +30,14 @@ public async Task Run(string name, string appVersion, string customerEnvironment string appParameters = parameters == null ? null : await Utils.ReplaceTokens(Session, File.ReadAllText(parameters.FullName), replaceTokens, true); // load the customer environment - CustomerEnvironment environment = null; - environment = await _customerPortalClient.GetObjectByName(customerEnvironmentName); + CustomerEnvironment environment = await _customerPortalClient.GetObjectByName(customerEnvironmentName); + + // check environment connection + await _newEnvironmentUtilities.CheckEnvironmentConnection(environment); // create or update the relationship between the environment and the app - CustomerEnvironmentApplicationPackage customerEnvironmentApplicationPackage = null; - customerEnvironmentApplicationPackage = await _customerPortalClient.CreateOrUpdateAppInstallation( - environment.Id, name, appVersion, appParameters, license - ); + CustomerEnvironmentApplicationPackage customerEnvironmentApplicationPackage = await _customerPortalClient.CreateOrUpdateAppInstallation( + environment.Id, name, appVersion, appParameters, license); // start deployment await _appInstallationHandler.Handle(name, customerEnvironmentApplicationPackage, environment.DeploymentTarget, output, timeout, timeoutToGetSomeMBMessage); diff --git a/src/Common/Handlers/NewEnvironmentHandler.cs b/src/Common/Handlers/NewEnvironmentHandler.cs index 4574247..8597ae7 100644 --- a/src/Common/Handlers/NewEnvironmentHandler.cs +++ b/src/Common/Handlers/NewEnvironmentHandler.cs @@ -1,4 +1,8 @@ -using Cmf.CustomerPortal.BusinessObjects; +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using Cmf.CustomerPortal.BusinessObjects; using Cmf.CustomerPortal.Orchestration.CustomerEnvironmentManagement.InputObjects; using Cmf.CustomerPortal.Sdk.Common.Services; using Cmf.Foundation.BusinessObjects; @@ -6,10 +10,6 @@ using Cmf.Foundation.BusinessOrchestration.GenericServiceManagement.InputObjects; using Cmf.Foundation.Common.Licenses.Enums; using Cmf.LightBusinessObjects.Infrastructure.Errors; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; namespace Cmf.CustomerPortal.Sdk.Common.Handlers { @@ -96,8 +96,10 @@ bool terminateOtherVersionsRemoveVolumes environment.Parameters = rawParameters; environment.ChangeSet = null; - Session.LogInformation($"Creating a new version of the Customer environment {name}..."); + // check environment connection + await _newEnvironmentUtilities.CheckEnvironmentConnection(environment); + Session.LogInformation($"Creating a new version of the Customer environment {name}..."); environment = await CreateEnvironment(_customerPortalClient, environment); // terminate other versions @@ -108,7 +110,7 @@ bool terminateOtherVersionsRemoveVolumes var customerEnvironmentsToTerminate = await _newEnvironmentUtilities.GetOtherVersionToTerminate(environment); OperationAttributeCollection terminateOperationAttibutes = new OperationAttributeCollection(); EntityType ceET = new GetEntityTypeByNameInput { Name = "CustomerEnvironment" }.GetEntityTypeByNameSync().EntityType; - foreach (var ce in customerEnvironmentsToTerminate) + foreach (var ce in customerEnvironmentsToTerminate) { OperationAttribute attributeRemove = new OperationAttribute(); attributeRemove.EntityId = ce.Id; @@ -135,7 +137,8 @@ bool terminateOtherVersionsRemoveVolumes await _environmentDeploymentHandler.WaitForEnvironmentsToBeTerminated(customerEnvironmentsToTerminate); Session.LogInformation("Other versions terminated!"); - } else + } + else { Session.LogInformation("There are no versions with an eligible status to be terminated."); } @@ -144,8 +147,6 @@ bool terminateOtherVersionsRemoveVolumes // if not, check if we are creating a new environment for an infrastructure else if (!string.IsNullOrWhiteSpace(customerInfrastructureName)) { - Session.LogInformation($"Creating the customer environment {name} for a customer infrastructure..."); - ProductSite environmentSite = null; // If we are creating in an infrastructure, and we are not creating the agent, the user must define the site for the environment if (!isInfrastructureAgent) @@ -157,7 +158,7 @@ bool terminateOtherVersionsRemoveVolumes } else { - throw new ArgumentNullException("Name of the Site is mandatory to create a Customer Environment"); + throw new ArgumentNullException(nameof(siteName), "Name of the Site is mandatory to create a Customer Environment"); } } @@ -173,6 +174,11 @@ bool terminateOtherVersionsRemoveVolumes CustomerLicense = isInfrastructureAgent ? null : await _customerPortalClient.GetObjectByName(licenseName) }; + // check environment connection + await CheckConnectionNewEnvironmentCreation(environment, customerInfrastructureName); + + Session.LogInformation($"Creating the customer environment {name} for a customer infrastructure..."); + environment = (await new CreateCustomerEnvironmentForCustomerInfrastructureInput { CustomerInfrastructureName = customerInfrastructureName, @@ -201,10 +207,25 @@ bool terminateOtherVersionsRemoveVolumes Session.LogInformation($"Customer environment {name} created..."); + // handle installation await _environmentDeploymentHandler.Handle(interactive, environment, target, outputDir, minutesTimeoutMainTask, minutesTimeoutToGetSomeMBMsg); } + /// + /// Check the connection for a creation of a new environment in some infrastructure + /// + /// The new environment + /// Infrastructure name + private async Task CheckConnectionNewEnvironmentCreation(CustomerEnvironment newEnvironment, string infrastructureName) + { + CustomerInfrastructure infrastructure = new() { Name = infrastructureName }; + newEnvironment.CustomerInfrastructure = infrastructure; + + // check environment connection + await _newEnvironmentUtilities.CheckEnvironmentConnection(newEnvironment); + } + /// /// Creates the environment or a new version if it already exists. /// diff --git a/src/Common/ICustomerPortalClient.cs b/src/Common/ICustomerPortalClient.cs index a360785..ace1f8c 100644 --- a/src/Common/ICustomerPortalClient.cs +++ b/src/Common/ICustomerPortalClient.cs @@ -1,4 +1,5 @@ using Cmf.CustomerPortal.BusinessObjects; +using Cmf.CustomerPortal.Orchestration.CustomerEnvironmentManagement.OutputObjects; using Cmf.Foundation.BusinessObjects; using Cmf.Foundation.BusinessObjects.QueryObject; using Cmf.Foundation.Common.Base; @@ -70,6 +71,7 @@ public interface ICustomerPortalClient /// definition id /// Task CheckCustomerEnvironmentConnectionStatus(long? definitionId); + /// Get's an object by its Id. /// /// The object's Type @@ -93,5 +95,13 @@ public interface ICustomerPortalClient /// Name of a CustomerLicense. /// The CustomerEnvironmentApplicationPackage relation. Task CreateOrUpdateAppInstallation(long customerEnvironmentId, string appName, string appVersion, string parameters, string customerLicenseName); + + /// + /// Check the Deployment connection to verify if the deployment of an environment/app can occur. + /// + /// customer environment + /// customer infrastructure + /// + Task CheckStartDeploymentConnection(CustomerEnvironment customerEnvironment, CustomerInfrastructure customerInfrastructure); } } \ No newline at end of file diff --git a/src/Common/Services/INewEnvironmentUtilities.cs b/src/Common/Services/INewEnvironmentUtilities.cs index 2bae074..b20ce6d 100644 --- a/src/Common/Services/INewEnvironmentUtilities.cs +++ b/src/Common/Services/INewEnvironmentUtilities.cs @@ -1,5 +1,5 @@ -using Cmf.CustomerPortal.BusinessObjects; -using System.Threading.Tasks; +using System.Threading.Tasks; +using Cmf.CustomerPortal.BusinessObjects; namespace Cmf.CustomerPortal.Sdk.Common.Services { @@ -21,5 +21,14 @@ public interface INewEnvironmentUtilities /// Specific customer environment version /// Task GetOtherVersionToTerminate(CustomerEnvironment customerEnvironment); + + + /// + /// In the case of a remote target, checks if the necessary connections are possible (if any) to make a deployment possible + /// If is a remote target and the deployment and the connection to the agent can't be startd, a exception is returned. + /// + /// Environment + /// Throw an exception if the environment needs to have a connection established with the agent, and that is not possible. + Task CheckEnvironmentConnection(CustomerEnvironment environment); } } diff --git a/src/Common/Services/NewEnvironmentUtilities.cs b/src/Common/Services/NewEnvironmentUtilities.cs index 5a38c44..8d23748 100644 --- a/src/Common/Services/NewEnvironmentUtilities.cs +++ b/src/Common/Services/NewEnvironmentUtilities.cs @@ -1,41 +1,100 @@ -using Cmf.CustomerPortal.BusinessObjects; -using Cmf.Foundation.BusinessObjects.QueryObject; -using System; +using System; using System.Data; using System.Threading.Tasks; +using Cmf.CustomerPortal.BusinessObjects; +using Cmf.Foundation.BusinessObjects.QueryObject; +using Cmf.LightBusinessObjects.Infrastructure.Errors; namespace Cmf.CustomerPortal.Sdk.Common.Services { public class NewEnvironmentUtilities : INewEnvironmentUtilities { - private readonly ISession _session; - private readonly ICustomerPortalClient _customerPortalClient; + private readonly ISession _session; + private readonly ICustomerPortalClient _customerPortalClient; + + public NewEnvironmentUtilities(ISession session, ICustomerPortalClient customerPortalClient) + { + _session = session; + _customerPortalClient = customerPortalClient; + } - public NewEnvironmentUtilities(ISession session, ICustomerPortalClient customerPortalClient) - { - _session = session; - _customerPortalClient = customerPortalClient; - } + public static DeploymentTarget GetAbbreviatedDeploymentTargetFromDeploymentTargetValue(string deploymentTargetValue) + { + return deploymentTargetValue switch + { + "DockerSwarmOnPremisesTarget" => DeploymentTarget.dockerswarm, + "PortainerV2Target" => DeploymentTarget.portainer, + "KubernetesOnPremisesTarget" => DeploymentTarget.KubernetesOnPremisesTarget, + "KubernetesRemoteTarget" => DeploymentTarget.KubernetesRemoteTarget, + "OpenShiftOnPremisesTarget" => DeploymentTarget.OpenShiftOnPremisesTarget, + "OpenShiftRemoteTarget" => DeploymentTarget.OpenShiftRemoteTarget, + "AzureKubernetesServiceTarget" => DeploymentTarget.AzureKubernetesServiceTarget, + _ => throw new Exception($"Target parameter '{deploymentTargetValue}' not supported"), + }; + } - public string GetDeploymentTargetValue(DeploymentTarget abbreviatedDeploymentTarget) + public string GetDeploymentTargetValue(DeploymentTarget abbreviatedDeploymentTarget) { switch (abbreviatedDeploymentTarget) { - case DeploymentTarget.dockerswarm: - return "DockerSwarmOnPremisesTarget"; - case DeploymentTarget.portainer: - return "PortainerV2Target"; - case DeploymentTarget.KubernetesOnPremisesTarget: - case DeploymentTarget.KubernetesRemoteTarget: - case DeploymentTarget.OpenShiftOnPremisesTarget: - case DeploymentTarget.OpenShiftRemoteTarget: - case DeploymentTarget.AzureKubernetesServiceTarget: - return abbreviatedDeploymentTarget.ToString(); + case DeploymentTarget.dockerswarm: + return "DockerSwarmOnPremisesTarget"; + case DeploymentTarget.portainer: + return "PortainerV2Target"; + case DeploymentTarget.KubernetesOnPremisesTarget: + case DeploymentTarget.KubernetesRemoteTarget: + case DeploymentTarget.OpenShiftOnPremisesTarget: + case DeploymentTarget.OpenShiftRemoteTarget: + case DeploymentTarget.AzureKubernetesServiceTarget: + return abbreviatedDeploymentTarget.ToString(); default: throw new Exception($"Target parameter '{abbreviatedDeploymentTarget}' not supported"); } } + /// + /// Informs if the deployment is a remote target + /// + /// depoymentTargetValue + /// + public static bool IsRemoteDeploymentTarget(string depoymentTargetValue) + { + DeploymentTarget deploymentTarget = GetAbbreviatedDeploymentTargetFromDeploymentTargetValue(depoymentTargetValue); + + return IsRemoteDeploymentTarget(deploymentTarget); + } + + /// + public async Task CheckEnvironmentConnection(CustomerEnvironment environment) + { + _session.LogInformation($"Checking the environment connection of the Customer environment {environment?.Name}..."); + + if (environment != null && IsRemoteDeploymentTarget(environment.DeploymentTarget)) + { + var checkConnectionResult = await _customerPortalClient.CheckStartDeploymentConnection(environment, environment.CustomerInfrastructure); + + if (!checkConnectionResult) + { + throw new CmfFaultException("The deployment can't be started because the connection can't be established with the agent!"); + } + } + } + + /// + /// Returns true if the Deployment Target is remote, otherwise return false + /// + /// + /// + public static bool IsRemoteDeploymentTarget(DeploymentTarget abbreviatedDeploymentTarget) + { + return abbreviatedDeploymentTarget switch + { + DeploymentTarget.portainer or DeploymentTarget.KubernetesRemoteTarget or DeploymentTarget.OpenShiftRemoteTarget or DeploymentTarget.AzureKubernetesServiceTarget => true, + _ => false, + }; + } + + /// public async Task GetOtherVersionToTerminate(CustomerEnvironment customerEnvironment) { QueryObject query = new QueryObject @@ -45,100 +104,100 @@ public async Task GetOtherVersionToTerminate(Cust Query = new Query() }; query.Query.Distinct = false; - query.Query.Filters = new FilterCollection() { - new Filter() - { - Name = "Version", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - Operator = Cmf.Foundation.Common.FieldOperator.GreaterThan, - Value = "0", - LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, - FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, - }, - new Filter() - { - Name = "Version", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - Operator = Cmf.Foundation.Common.FieldOperator.IsNotEqualTo, - Value = customerEnvironment.Version, - LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, - FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, - }, - new Filter() - { - Name = "UniversalState", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - Operator = Cmf.Foundation.Common.FieldOperator.IsNotEqualTo, - Value = 4, - LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, - FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, - }, - new Filter() - { - Name = "Status", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - Operator = Cmf.Foundation.Common.FieldOperator.In, - Value = new int[] { - (int)DeploymentStatus.NotDeployed, - (int)DeploymentStatus.DeploymentFailed, - (int)DeploymentStatus.DeploymentPartiallySucceeded, - (int)DeploymentStatus.DeploymentSucceeded - }, - LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, - FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, - }, - new Filter() - { - Name = "Name", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - Operator = Cmf.Foundation.Common.FieldOperator.IsEqualTo, - Value = customerEnvironment.Name, - LogicalOperator = Cmf.Foundation.Common.LogicalOperator.Nothing, - FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, - } - }; - query.Query.Fields = new FieldCollection() { - new Field() - { - Alias = "Id", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - IsUserAttribute = false, - Name = "Id", - Position = 0, - Sort = Cmf.Foundation.Common.FieldSort.NoSort - }, - new Field() - { - Alias = "DefinitionId", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - IsUserAttribute = false, - Name = "DefinitionId", - Position = 1, - Sort = Cmf.Foundation.Common.FieldSort.NoSort - }, - new Field() - { - Alias = "Name", - ObjectName = "CustomerEnvironment", - ObjectAlias = "CustomerEnvironment_1", - IsUserAttribute = false, - Name = "Name", - Position = 2, - Sort = Cmf.Foundation.Common.FieldSort.NoSort - } - }; - query.Query.Relations = new RelationCollection(); + query.Query.Filters = new FilterCollection() { + new Filter() + { + Name = "Version", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + Operator = Cmf.Foundation.Common.FieldOperator.GreaterThan, + Value = "0", + LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, + FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, + }, + new Filter() + { + Name = "Version", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + Operator = Cmf.Foundation.Common.FieldOperator.IsNotEqualTo, + Value = customerEnvironment.Version, + LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, + FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, + }, + new Filter() + { + Name = "UniversalState", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + Operator = Cmf.Foundation.Common.FieldOperator.IsNotEqualTo, + Value = 4, + LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, + FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, + }, + new Filter() + { + Name = "Status", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + Operator = Cmf.Foundation.Common.FieldOperator.In, + Value = new int[] { + (int)DeploymentStatus.NotDeployed, + (int)DeploymentStatus.DeploymentFailed, + (int)DeploymentStatus.DeploymentPartiallySucceeded, + (int)DeploymentStatus.DeploymentSucceeded + }, + LogicalOperator = Cmf.Foundation.Common.LogicalOperator.AND, + FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, + }, + new Filter() + { + Name = "Name", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + Operator = Cmf.Foundation.Common.FieldOperator.IsEqualTo, + Value = customerEnvironment.Name, + LogicalOperator = Cmf.Foundation.Common.LogicalOperator.Nothing, + FilterType = Cmf.Foundation.BusinessObjects.QueryObject.Enums.FilterType.Normal, + } + }; + query.Query.Fields = new FieldCollection() { + new Field() + { + Alias = "Id", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + IsUserAttribute = false, + Name = "Id", + Position = 0, + Sort = Cmf.Foundation.Common.FieldSort.NoSort + }, + new Field() + { + Alias = "DefinitionId", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + IsUserAttribute = false, + Name = "DefinitionId", + Position = 1, + Sort = Cmf.Foundation.Common.FieldSort.NoSort + }, + new Field() + { + Alias = "Name", + ObjectName = "CustomerEnvironment", + ObjectAlias = "CustomerEnvironment_1", + IsUserAttribute = false, + Name = "Name", + Position = 2, + Sort = Cmf.Foundation.Common.FieldSort.NoSort + } + }; + query.Query.Relations = new RelationCollection(); - DataSet dataSet = await _customerPortalClient.ExecuteQuery(query); + DataSet dataSet = await _customerPortalClient.ExecuteQuery(query); - var result = new CustomerEnvironmentCollection(); + var result = new CustomerEnvironmentCollection(); if (dataSet?.Tables?.Count > 0) { foreach (DataRow row in dataSet.Tables[0].Rows) @@ -152,7 +211,7 @@ public async Task GetOtherVersionToTerminate(Cust } } - return result; - } - } + return result; + } + } } diff --git a/src/Common/Services/Utilities.cs b/src/Common/Services/Utilities.cs index ee5e9a7..324f859 100644 --- a/src/Common/Services/Utilities.cs +++ b/src/Common/Services/Utilities.cs @@ -1,9 +1,9 @@ -using Cmf.Foundation.Common; -using Cmf.Foundation.Common.Base; -using Cmf.LightBusinessObjects.Infrastructure.Errors; -using System; +using System; using System.Collections.Generic; using System.Threading.Tasks; +using Cmf.Foundation.Common; +using Cmf.Foundation.Common.Base; +using Cmf.LightBusinessObjects.Infrastructure.Errors; namespace Cmf.CustomerPortal.Sdk.Common.Services { @@ -32,7 +32,7 @@ public class Utilities return await customerPortalClient.GetObjectByName(objectName, levelsToLoad); } - catch(CmfFaultException e) + catch (CmfFaultException e) { if (Enum.TryParse(e.Code?.Name, out CmfExceptionType exceptionType) && exceptionTypeAndErrorMsg != null && exceptionTypeAndErrorMsg.ContainsKey(exceptionType)) { diff --git a/src/Common/libs/Cmf.LightBusinessObjects.dll b/src/Common/libs/Cmf.LightBusinessObjects.dll index fc49bbe..d8143d5 100644 Binary files a/src/Common/libs/Cmf.LightBusinessObjects.dll and b/src/Common/libs/Cmf.LightBusinessObjects.dll differ diff --git a/src/Common/libs/Cmf.LoadBalancing.dll b/src/Common/libs/Cmf.LoadBalancing.dll index 0b1dfdb..6ea9222 100644 Binary files a/src/Common/libs/Cmf.LoadBalancing.dll and b/src/Common/libs/Cmf.LoadBalancing.dll differ diff --git a/src/Common/libs/Cmf.MessageBus.Client.dll b/src/Common/libs/Cmf.MessageBus.Client.dll index d781dfc..0e8cbb6 100644 Binary files a/src/Common/libs/Cmf.MessageBus.Client.dll and b/src/Common/libs/Cmf.MessageBus.Client.dll differ diff --git a/src/Version.props b/src/Version.props index fb7e3c8..fd6848b 100644 --- a/src/Version.props +++ b/src/Version.props @@ -1,5 +1,5 @@ - 1.13.11 + 1.13.12