private bool CreateWorkspace(LogAnalyticsWorkspaceModel workspaceModel = null)
        {
            Log.Info("enter");
            bool response = false;

            // create workspaceModel
            Log.Info($"creating workspaceModel {Config.LogAnalyticsWorkspaceName}");

            if (Config.LogAnalyticsCreate)
            {
                _arm.CreateResourceGroup($"/subscriptions/{Config.AzureSubscriptionId}/resourcegroups/{Config.AzureResourceGroup}", Config.AzureResourceGroupLocation);
            }

            string resourceId = $"/subscriptions/{Config.AzureSubscriptionId}/resourcegroups/{Config.AzureResourceGroup}/providers/Microsoft.OperationalInsights/workspaces/{Config.LogAnalyticsWorkspaceName}";

            if (workspaceModel == null)
            {
                Log.Info("creating default workspaceModel");
                workspaceModel = new LogAnalyticsWorkspaceModel()
                {
                    location   = Config.AzureResourceGroupLocation,
                    properties = new LogAnalyticsWorkspaceModel.Properties()
                    {
                        retentionInDays = Config.LogAnalyticsWorkspaceSku.ToLower() == "free" ? 7 : 30,
                        source          = "Azure",
                        sku             = new LogAnalyticsWorkspaceModel.Properties.Sku()
                        {
                            name = Config.LogAnalyticsWorkspaceSku
                        }
                    }
                };
            }

            Http http = _arm.ProvisionResource(resourceId, JsonConvert.SerializeObject(workspaceModel), _logAnalyticsApiVer);

            if (!http.Success)
            {
                return(false);
            }

            response = GetCurrentWorkspace(JsonConvert.DeserializeObject <LogAnalyticsWorkspaceRecordResult>(http.ResponseStreamString).properties.customerId);

            // set new key
            Config.LogAnalyticsKey = GetWorkspacePrimaryKey();
            return(response);
        }
        private bool GetCurrentWorkspace(string workspaceId = null)
        {
            Log.Info("enter");
            string url  = $"{ManagementAzureCom}/subscriptions/{Config.AzureSubscriptionId}/providers/Microsoft.OperationalInsights/workspaces?{_logAnalyticsApiVer}";
            Http   http = _arm.SendRequest(url);

            workspaceId = workspaceId ?? Config.LogAnalyticsId;

            LogAnalyticsWorkspaceRecordResult[] workspaces = (JsonConvert.DeserializeObject <LogAnalyticsWorkspaceRecordResults>(http.ResponseStreamString)).value.ToArray();
            CurrentWorkspace = workspaces.FirstOrDefault(x => x.properties.customerId == workspaceId);

            Log.Info("current workspaceModel:", ConsoleColor.Green, null, CurrentWorkspace);
            if (CurrentWorkspace != null)
            {
                Config.AzureResourceGroupLocation = Config.AzureResourceGroupLocation ?? CurrentWorkspace.location;
                Config.LogAnalyticsWorkspaceName  = Config.LogAnalyticsWorkspaceName ?? CurrentWorkspace.name;
                Config.LogAnalyticsId             = CurrentWorkspace.properties.customerId;
                _currentWorkspaceModelModel       = GetCurrentWorkspaceModel();
            }

            return(http.Success & CurrentWorkspace != null);
        }
        private LogAnalyticsWorkspaceModel GetCurrentWorkspaceModel()
        {
            LogAnalyticsWorkspaceModel currentWorkspaceModel = new LogAnalyticsWorkspaceModel();

            if (ParseWorkspaceResourceId(CurrentWorkspace.id))
            {
                currentWorkspaceModel.location   = CurrentWorkspace.location;
                currentWorkspaceModel.properties = new LogAnalyticsWorkspaceModel.Properties()
                {
                    retentionInDays = CurrentWorkspace.properties.retentionInDays,
                    sku             = new LogAnalyticsWorkspaceModel.Properties.Sku()
                    {
                        name = CurrentWorkspace.properties.sku.name
                    }
                };
            }
            else
            {
                Log.Error("unable to get current workspaceModel model");
            }

            return(currentWorkspaceModel);
        }