public PSDataSource(DataSource dataSource, string resourceGroupName, string workspaceName)
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException("dataSource");
            }

            this.ResourceGroupName = resourceGroupName;
            this.WorkspaceName     = workspaceName;
            this.Name       = dataSource.Name;
            this.ResourceId = dataSource.Id;
            this.Kind       = dataSource.Kind;
            switch (this.Kind)
            {
            case PSDataSourceKinds.AzureAuditLog:
                this.Properties = JsonConvert.DeserializeObject <PSAzureAuditLogDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.AzureActivityLog:
                this.Properties = JsonConvert.DeserializeObject <PSAzureActivityLogDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.WindowsEvent:
                this.Properties = JsonConvert.DeserializeObject <PSWindowsEventDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.WindowsPerformanceCounter:
                this.Properties = JsonConvert.DeserializeObject <PSWindowsPerformanceCounterDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.LinuxSyslog:
                this.Properties = JsonConvert.DeserializeObject <PSLinuxSyslogDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.LinuxSyslogCollection:
                this.Properties = JsonConvert.DeserializeObject <PSLinuxSyslogCollectionDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.LinuxPerformanceObject:
                this.Properties = JsonConvert.DeserializeObject <PSLinuxPerformanceObjectDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.LinuxPerformanceCollection:
                this.Properties = JsonConvert.DeserializeObject <PSLinuxPerformanceCollectionDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.CustomLog:
                this.Properties = JsonConvert.DeserializeObject <PSCustomLogDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.CustomLogCollection:
                this.Properties = JsonConvert.DeserializeObject <PSCustomLogCollectionDataSourceProperties>(dataSource.Properties);
                break;

            case PSDataSourceKinds.IISLogs:
                this.Properties = JsonConvert.DeserializeObject <PSIISLogsDataSourceProperties>(dataSource.Properties);
                break;
            }
        }
 protected void CreatePSDataSourceWithProperties(PSDataSourcePropertiesBase createParameters, string dataSourceName)
 {
     CreatePSDataSourceParameters parameters = new CreatePSDataSourceParameters()
     {
         Name = dataSourceName,
         Properties = createParameters,
         ResourceGroupName = this.ResourceGroupName,
         WorkspaceName = this.WorkspaceName,
         Force = Force.IsPresent,
         ConfirmAction = ConfirmAction
     };
     WriteObject(OperationalInsightsClient.CreatePSDataSource(parameters));
 }
        public PSDataSource(DataSource dataSource, string resourceGroupName, string workspaceName)
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException("dataSource");
            }

            this.ResourceGroupName = resourceGroupName;
            this.WorkspaceName = workspaceName;
            this.Name = dataSource.Name;
            this.ResourceId = dataSource.Id;
            this.Kind = dataSource.Kind;
            switch(this.Kind){
                case PSDataSourceKinds.AzureAuditLog:
                    this.Properties = JsonConvert.DeserializeObject<PSAzureAuditLogDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.AzureActivityLog:
                    this.Properties = JsonConvert.DeserializeObject<PSAzureActivityLogDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.WindowsEvent:
                    this.Properties = JsonConvert.DeserializeObject<PSWindowsEventDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.WindowsPerformanceCounter:
                    this.Properties = JsonConvert.DeserializeObject<PSWindowsPerformanceCounterDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.LinuxSyslog:
                    this.Properties = JsonConvert.DeserializeObject<PSLinuxSyslogDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.LinuxSyslogCollection:
                    this.Properties = JsonConvert.DeserializeObject<PSLinuxSyslogCollectionDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.LinuxPerformanceObject:
                    this.Properties = JsonConvert.DeserializeObject<PSLinuxPerformanceObjectDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.LinuxPerformanceCollection:
                    this.Properties = JsonConvert.DeserializeObject<PSLinuxPerformanceCollectionDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.CustomLog:
                    this.Properties = JsonConvert.DeserializeObject<PSCustomLogDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.CustomLogCollection:
                    this.Properties = JsonConvert.DeserializeObject<PSCustomLogCollectionDataSourceProperties>(dataSource.Properties);
                    break;
                case PSDataSourceKinds.IISLogs:
                    this.Properties = JsonConvert.DeserializeObject<PSIISLogsDataSourceProperties>(dataSource.Properties);
                    break;
            }

        }
 public virtual DataSource CreateOrUpdateDataSource(
     string resourceGroupName,
     string workspaceName,
     string name,
     PSDataSourcePropertiesBase dataSourceProperties)
 {
     var serializedProperties = JsonConvert.SerializeObject(dataSourceProperties);
     
     var response = OperationalInsightsManagementClient.DataSources.CreateOrUpdate(
         resourceGroupName,
         workspaceName,
         new DataSourceCreateOrUpdateParameters
         {
             DataSource = new DataSource { Name = name, Kind=dataSourceProperties.Kind, Properties = serializedProperties}
         });
     
     return response.DataSource;
 }
 protected void CreatePSDataSourceWithProperties(PSDataSourcePropertiesBase createParameters)
 {
     CreatePSDataSourceWithProperties(createParameters, this.Name);
 }