From e22394651a650111dd57d2e113f477c176acd53c Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Tue, 18 Apr 2023 15:26:01 -0400 Subject: [PATCH 1/7] add cache --- src/DynamoPackages/PackageManagerClient.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/DynamoPackages/PackageManagerClient.cs b/src/DynamoPackages/PackageManagerClient.cs index e2b156e118a..a93ec3058f8 100644 --- a/src/DynamoPackages/PackageManagerClient.cs +++ b/src/DynamoPackages/PackageManagerClient.cs @@ -14,6 +14,7 @@ public class PackageManagerClient #region Properties/Fields public const string PackageEngineName = "dynamo"; + private IEnumerable cachedHosts; // These were used early on in order to identify packages with binaries and python scripts // This is now a bona fide field in the DB so they are obsolete. @@ -179,12 +180,16 @@ internal virtual PackageVersion GetPackageVersionHeader(string id, string versio /// internal virtual IEnumerable GetKnownHosts() { - return FailFunc.TryExecute(() => + if (cachedHosts == null) { - var hosts = new Hosts(); - var hostsResponse = this.client.ExecuteAndDeserializeWithContent>(hosts); - return hostsResponse.content; - }, new List()); + cachedHosts = FailFunc.TryExecute(() => + { + var hosts = new Hosts(); + var hostsResponse = this.client.ExecuteAndDeserializeWithContent>(hosts); + return hostsResponse.content; + }, new List()); + } + return cachedHosts; } internal bool GetTermsOfUseAcceptanceStatus() From bd522b713ee150d168ad014f215d7a1bf023d0d0 Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Tue, 18 Apr 2023 15:51:37 -0400 Subject: [PATCH 2/7] add new host name check --- src/DynamoPackages/PackageManagerExtension.cs | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 6d7deca8d5a..3f0358b3c0a 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Configuration; using System.Linq; @@ -44,6 +44,13 @@ public class PackageManagerExtension : IExtension, ILogSource, IExtensionSource /// private Dictionary> NodePackageDictionary; + // TODO : Update all packages to use this hostname and replace the hostname in package manager as well. + /// + /// This will be used to match Civil 3D specific packages, + /// as there is a mismatch between the host dependency name in packages and the host name used by Civil 3D for Dynamo. + /// + private readonly string Civil3DHostName = "Dynamo Civil 3D"; + public string Name { get { return "DynamoPackageManager"; } } public string UniqueId @@ -351,13 +358,20 @@ internal bool CheckIfPackagesTargetOtherHosts(IEnumerable newPac } else { + string currentHost = Host; + if (Host.ToLower().Equals(Civil3DHostName.ToLower())) + { + //To mitigate the mismatch between Dynamo Civil3D hostname and Dynamo Packages Host dependency name, + //setting the current host name as the one used by package autors to mark their package Civil3D dependent. + currentHost = "Civil 3D"; + } // Warn if there are packages targeting other hosts but not our host - var otherHosts = knownHosts.Except(new List() { Host }); + var otherHosts = knownHosts.Except(new List() { currentHost }); containsPackagesThatTargetOtherHosts = newPackageHeaders.Any(x => { // Is our host in the list? // If not, is any other host in the list? - return x.host_dependencies != null && !x.host_dependencies.Contains(Host) && otherHosts.Any(y => x.host_dependencies.Contains(y)); + return x.host_dependencies != null && !x.host_dependencies.Contains(currentHost) && otherHosts.Any(y => x.host_dependencies.Contains(y)); }); } From af02c1fc691e6b0b6411aa5d8c3514c038641252 Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Tue, 18 Apr 2023 17:38:47 -0400 Subject: [PATCH 3/7] Update PackageManagerExtension.cs --- src/DynamoPackages/PackageManagerExtension.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 3f0358b3c0a..8f25ca10807 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -362,7 +362,7 @@ internal bool CheckIfPackagesTargetOtherHosts(IEnumerable newPac if (Host.ToLower().Equals(Civil3DHostName.ToLower())) { //To mitigate the mismatch between Dynamo Civil3D hostname and Dynamo Packages Host dependency name, - //setting the current host name as the one used by package autors to mark their package Civil3D dependent. + //setting the current host name as the one used by package authors to mark their package Civil3D dependent. currentHost = "Civil 3D"; } // Warn if there are packages targeting other hosts but not our host From a86a9402e40e85c3a923c95faeedb968e5f141bf Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Tue, 18 Apr 2023 17:44:18 -0400 Subject: [PATCH 4/7] Update PackageManagerExtension.cs --- src/DynamoPackages/PackageManagerExtension.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 8f25ca10807..39eb966de32 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -50,6 +50,7 @@ public class PackageManagerExtension : IExtension, ILogSource, IExtensionSource /// as there is a mismatch between the host dependency name in packages and the host name used by Civil 3D for Dynamo. /// private readonly string Civil3DHostName = "Dynamo Civil 3D"; + private readonly string oldCivil3DHostName = "Civil 3D"; public string Name { get { return "DynamoPackageManager"; } } @@ -363,7 +364,7 @@ internal bool CheckIfPackagesTargetOtherHosts(IEnumerable newPac { //To mitigate the mismatch between Dynamo Civil3D hostname and Dynamo Packages Host dependency name, //setting the current host name as the one used by package authors to mark their package Civil3D dependent. - currentHost = "Civil 3D"; + currentHost = oldCivil3DHostName; } // Warn if there are packages targeting other hosts but not our host var otherHosts = knownHosts.Except(new List() { currentHost }); From f13329fb210fb42b6e74535d6cff7426743be6f9 Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Wed, 19 Apr 2023 14:35:10 -0400 Subject: [PATCH 5/7] Update PackageManagerExtension.cs --- src/DynamoPackages/PackageManagerExtension.cs | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 39eb966de32..75f2b39b9f4 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -44,14 +44,6 @@ public class PackageManagerExtension : IExtension, ILogSource, IExtensionSource /// private Dictionary> NodePackageDictionary; - // TODO : Update all packages to use this hostname and replace the hostname in package manager as well. - /// - /// This will be used to match Civil 3D specific packages, - /// as there is a mismatch between the host dependency name in packages and the host name used by Civil 3D for Dynamo. - /// - private readonly string Civil3DHostName = "Dynamo Civil 3D"; - private readonly string oldCivil3DHostName = "Civil 3D"; - public string Name { get { return "DynamoPackageManager"; } } public string UniqueId @@ -359,20 +351,20 @@ internal bool CheckIfPackagesTargetOtherHosts(IEnumerable newPac } else { - string currentHost = Host; - if (Host.ToLower().Equals(Civil3DHostName.ToLower())) + bool civilflag = false; + if (Host.ToLower().Contains("civil")) { //To mitigate the mismatch between Dynamo Civil3D hostname and Dynamo Packages Host dependency name, - //setting the current host name as the one used by package authors to mark their package Civil3D dependent. - currentHost = oldCivil3DHostName; + //setting the civil flag to true in case of Civil3D host. + civilflag = true; } // Warn if there are packages targeting other hosts but not our host - var otherHosts = knownHosts.Except(new List() { currentHost }); + var otherHosts = knownHosts.Except(new List() { Host }); containsPackagesThatTargetOtherHosts = newPackageHeaders.Any(x => { // Is our host in the list? // If not, is any other host in the list? - return x.host_dependencies != null && !x.host_dependencies.Contains(currentHost) && otherHosts.Any(y => x.host_dependencies.Contains(y)); + return x.host_dependencies != null && !x.host_dependencies.Contains(Host) && !(civilflag && x.host_dependencies.Any(y => y.Contains("civil"))) && otherHosts.Any(y => x.host_dependencies.Contains(y)); }); } From 0021eea2c2beec467550f5b205c328f1af3001f5 Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Wed, 19 Apr 2023 14:37:39 -0400 Subject: [PATCH 6/7] Update PackageManagerExtension.cs --- src/DynamoPackages/PackageManagerExtension.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 75f2b39b9f4..2699298a59c 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -351,12 +351,13 @@ internal bool CheckIfPackagesTargetOtherHosts(IEnumerable newPac } else { - bool civilflag = false; - if (Host.ToLower().Contains("civil")) + string civilStr = "civil"; + bool civilFlag = false; + if (Host.ToLower().Contains(civilStr)) { //To mitigate the mismatch between Dynamo Civil3D hostname and Dynamo Packages Host dependency name, //setting the civil flag to true in case of Civil3D host. - civilflag = true; + civilFlag = true; } // Warn if there are packages targeting other hosts but not our host var otherHosts = knownHosts.Except(new List() { Host }); @@ -364,7 +365,7 @@ internal bool CheckIfPackagesTargetOtherHosts(IEnumerable newPac { // Is our host in the list? // If not, is any other host in the list? - return x.host_dependencies != null && !x.host_dependencies.Contains(Host) && !(civilflag && x.host_dependencies.Any(y => y.Contains("civil"))) && otherHosts.Any(y => x.host_dependencies.Contains(y)); + return x.host_dependencies != null && !x.host_dependencies.Contains(Host) && !(civilFlag && x.host_dependencies.Any(y => y.Contains(civilStr))) && otherHosts.Any(y => x.host_dependencies.Contains(y)); }); } From 2e1f0e518a935ab18b96b4f656bafc97c10d11be Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Fri, 21 Apr 2023 00:38:50 -0400 Subject: [PATCH 7/7] Update PackageManagerExtension.cs --- src/DynamoPackages/PackageManagerExtension.cs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 2699298a59c..d51021faa1f 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; -using System.Configuration; using System.Linq; using System.Reflection; -using Dynamo.Configuration; using Dynamo.Extensions; using Dynamo.Graph.Workspaces; using Dynamo.Interfaces; @@ -351,21 +349,14 @@ internal bool CheckIfPackagesTargetOtherHosts(IEnumerable newPac } else { - string civilStr = "civil"; - bool civilFlag = false; - if (Host.ToLower().Contains(civilStr)) - { - //To mitigate the mismatch between Dynamo Civil3D hostname and Dynamo Packages Host dependency name, - //setting the civil flag to true in case of Civil3D host. - civilFlag = true; - } // Warn if there are packages targeting other hosts but not our host var otherHosts = knownHosts.Except(new List() { Host }); containsPackagesThatTargetOtherHosts = newPackageHeaders.Any(x => { // Is our host in the list? // If not, is any other host in the list? - return x.host_dependencies != null && !x.host_dependencies.Contains(Host) && !(civilFlag && x.host_dependencies.Any(y => y.Contains(civilStr))) && otherHosts.Any(y => x.host_dependencies.Contains(y)); + // Also, check if any dependency contains the hostname or vice-versa. + return x.host_dependencies != null && !x.host_dependencies.Contains(Host) && !x.host_dependencies.Any(y => Host.Contains(y)) && otherHosts.Any(y => x.host_dependencies.Contains(y)); }); }