public static async Task <ISet <AutomationAsset> > GetAll(String localWorkspacePath, AutomationManagementClient automationApi, string resourceGroupName, string automationAccountName, string encryptionCertThumbprint, ICollection <ConnectionType> connectionTypes) { CancellationTokenSource cts = new CancellationTokenSource(); cts.CancelAfter(TIMEOUT_MS); VariableListResponse cloudVariables = await automationApi.Variables.ListAsync(resourceGroupName, automationAccountName, cts.Token); cts = new CancellationTokenSource(); cts.CancelAfter(TIMEOUT_MS); CredentialListResponse cloudCredentials = await automationApi.PsCredentials.ListAsync(resourceGroupName, automationAccountName, cts.Token); cts = new CancellationTokenSource(); cts.CancelAfter(TIMEOUT_MS); ConnectionListResponse cloudConnections = await automationApi.Connections.ListAsync(resourceGroupName, automationAccountName, cts.Token); CertificateListResponse cloudCertificates = await automationApi.Certificates.ListAsync(resourceGroupName, automationAccountName, cts.Token); // need to get connections one at a time to get each connection's values. Values currently come back as empty in list call var connectionAssetsWithValues = new HashSet <Connection>(); foreach (var connection in cloudConnections.Connection) { cts = new CancellationTokenSource(); cts.CancelAfter(TIMEOUT_MS); var connectionResponse = await automationApi.Connections.GetAsync(resourceGroupName, automationAccountName, connection.Name, cts.Token); connectionAssetsWithValues.Add(connectionResponse.Connection); } LocalAssets localAssets = LocalAssetsStore.Get(localWorkspacePath, encryptionCertThumbprint, connectionTypes); var automationAssets = new SortedSet <AutomationAsset>(); // Compare cloud variables to local foreach (var cloudAsset in cloudVariables.Variables) { var localAsset = localAssets.Variables.Find(asset => asset.Name == cloudAsset.Name); var automationAsset = (localAsset != null) ? new AutomationVariable(localAsset, cloudAsset) : new AutomationVariable(cloudAsset); automationAssets.Add(automationAsset); } // Add remaining locally created variables foreach (var localAsset in localAssets.Variables) { var automationAsset = new AutomationVariable(localAsset); automationAssets.Add(automationAsset); } // Compare cloud credentials to local foreach (var cloudAsset in cloudCredentials.Credentials) { var localAsset = localAssets.PSCredentials.Find(asset => asset.Name == cloudAsset.Name); var automationAsset = (localAsset != null) ? new AutomationCredential(localAsset, cloudAsset) : new AutomationCredential(cloudAsset); automationAssets.Add(automationAsset); } // Add remaining locally created credentials foreach (var localAsset in localAssets.PSCredentials) { var automationAsset = new AutomationCredential(localAsset); automationAssets.Add(automationAsset); } // Compare cloud connections to local foreach (var cloudAsset in connectionAssetsWithValues) { ConnectionTypeGetResponse connectionType = await automationApi.ConnectionTypes.GetAsync(resourceGroupName, automationAccountName, cloudAsset.Properties.ConnectionType.Name); var localAsset = localAssets.Connections.Find(asset => asset.Name == cloudAsset.Name); var automationAsset = (localAsset != null) ? new AutomationConnection(localAsset, cloudAsset) : new AutomationConnection(cloudAsset, connectionType.ConnectionType); automationAssets.Add(automationAsset); } // Add remaining locally created connections foreach (var localAsset in localAssets.Connections) { var automationAsset = new AutomationConnection(localAsset); automationAssets.Add(automationAsset); } // Compare cloud certificates to local foreach (var cloudAsset in cloudCertificates.Certificates) { var localAsset = localAssets.Certificate.Find(asset => asset.Name == cloudAsset.Name); var automationAsset = (localAsset != null) ? new AutomationCertificate(localAsset, cloudAsset) : new AutomationCertificate(cloudAsset); automationAssets.Add(automationAsset); } // Add remaining locally created certificates foreach (var localAsset in localAssets.Certificate) { var automationAsset = new AutomationCertificate(localAsset); automationAssets.Add(automationAsset); } return(automationAssets); }
public static async Task <ISet <AutomationAsset> > GetAll(String localWorkspacePath, AutomationManagementClient automationApi, string resourceGroupName, string automationAccountName, string encryptionCertThumbprint) { VariableListResponse cloudVariables = await automationApi.Variables.ListAsync(resourceGroupName, automationAccountName); CredentialListResponse cloudCredentials = await automationApi.PsCredentials.ListAsync(resourceGroupName, automationAccountName); // TODO: need to get one at a time to get values. values currently comes back as empty //ConnectionListResponse cloudConnections = await automationApi.Connections.ListAsync(resourceGroupName, automationAccountName); LocalAssets localAssets = LocalAssetsStore.Get(localWorkspacePath, encryptionCertThumbprint); var automationAssets = new SortedSet <AutomationAsset>(); // Compare cloud variables to local foreach (var cloudAsset in cloudVariables.Variables) { var localAsset = localAssets.Variables.Find(asset => asset.Name == cloudAsset.Name); var automationAsset = (localAsset != null) ? new AutomationVariable(localAsset, cloudAsset) : new AutomationVariable(cloudAsset); automationAssets.Add(automationAsset); } // Add remaining locally created variables foreach (var localAsset in localAssets.Variables) { var automationAsset = new AutomationVariable(localAsset); automationAssets.Add(automationAsset); } // Compare cloud credentials to local foreach (var cloudAsset in cloudCredentials.Credentials) { var localAsset = localAssets.PSCredentials.Find(asset => asset.Name == cloudAsset.Name); var automationAsset = (localAsset != null) ? new AutomationCredential(localAsset, cloudAsset) : new AutomationCredential(cloudAsset); automationAssets.Add(automationAsset); } // Add remaining locally created credentials foreach (var localAsset in localAssets.PSCredentials) { var automationAsset = new AutomationCredential(localAsset); automationAssets.Add(automationAsset); } // Compare cloud connections to local /*foreach (var cloudAsset in cloudConnections.Connection) * { * var localAsset = localAssets.Connections.Find(asset => asset.Name == cloudAsset.Name); * * var automationAsset = (localAsset != null) ? * new AutomationConnection(localAsset, cloudAsset) : * new AutomationConnection(cloudAsset); * * automationAssets.Add(automationAsset); * } * * // Add remaining locally created connections * foreach (var localAsset in localAssets.Connections) * { * var automationAsset = new AutomationConnection(localAsset); * automationAssets.Add(automationAsset); * }*/ return(automationAssets); }