Esempio n. 1
0
        private void DeleteResources( ClearResourcesInputs inputs )
        {        
            if( inputs.NamespaceExists )
            {
                _ConsoleBuffer.Add( "Connecting to Service Bus..." );
                ServiceBusManagementClient sbMgmt = new ServiceBusManagementClient( inputs.Credentials );

                bool deleteNamespace = ConsoleHelper.AskAndPerformAction(
                    "Do you want to delete whole namespace " + inputs.SBNamespace + " including all entities under it?",
                    "Are you sure you want to delete namespace " + inputs.SBNamespace + "?",
                    "Are you sure you do not want to delete namespace " + inputs.SBNamespace + "?",
                    ( ) =>
                    {
                        _ConsoleBuffer.Add( "Sending request to delete " + inputs.SBNamespace + " namespace..." );
                        AzureOperationResponse nsResponse = sbMgmt.Namespaces.Delete( inputs.SBNamespace );
                        if( nsResponse.StatusCode == HttpStatusCode.OK )
                        {
                            _ConsoleBuffer.Add( inputs.SBNamespace + " namespace was deleted." );
                        }
                    },
                    _ConsoleBuffer );

                //if we did not delete whole Namespace, maybe we want to delete some of its Event Hubs?
                if( !deleteNamespace )
                {
                    _ConsoleBuffer.Add( "Reading list of Event Hubs from " + inputs.SBNamespace + " namespace..." );

                    var nsDescription = sbMgmt.Namespaces.GetNamespaceDescription( inputs.SBNamespace );
                    var nsConnectionString = nsDescription.NamespaceDescriptions.First(
                        ( d ) => String.Equals( d.AuthorizationType, "SharedAccessAuthorization" )
                        ).ConnectionString;
                    var nsManager = NamespaceManager.CreateFromConnectionString( nsConnectionString );

                    var eventHubs = nsManager.GetEventHubs( );

                    foreach( var eventHubDescription in eventHubs )
                    {
                        EventHubDescription description = eventHubDescription;
                        ConsoleHelper.AskAndPerformAction(
                            "Do you want to delete Event Hub " + eventHubDescription.Path +
                            " including all messages under it?",
                            "Are you sure you want to delete Event Hub " + eventHubDescription.Path + "?",
                            "Are you sure you do not want to delete Event Hub " + eventHubDescription.Path + "?",
                            ( ) =>
                            {
                                _ConsoleBuffer.Add( "Sending request to delete " + description.Path + " Event Hub..." );
                                nsManager.DeleteEventHub( description.Path );
                                _ConsoleBuffer.Add( "Request to delete " + description.Path + " Event Hub was accepted." );
                            },
                            _ConsoleBuffer );
                    }
                }
            }

            //Deleting Storage
            _ConsoleBuffer.Add( "Reading list of Storage Accounts..." );
            StorageManagementClient stgMgmt = new StorageManagementClient( inputs.Credentials );
            HashSet<string> storageAccounts = new HashSet<string>( );
            foreach( var storageAccount in stgMgmt.StorageAccounts.List( ) )
            {
                storageAccounts.Add( storageAccount.Name );
            }

            int deletedCount = 0;
            if( storageAccounts.Contains( inputs.StorageAccountName ) )
            {
                ConsoleHelper.AskAndPerformAction(
                    "Do you want to delete " + inputs.StorageAccountName + " storage account?",
                    "Are you sure you want to delete " + inputs.StorageAccountName + " storage account?",
                    "Are you sure you do not want to delete " + inputs.StorageAccountName + " storage account?",
                    ( ) =>
                    {
                        _ConsoleBuffer.Add( "Sending request to delete " + inputs.StorageAccountName + " Storage account..." );
                        AzureOperationResponse resultStg = stgMgmt.StorageAccounts.Delete( inputs.StorageAccountName );
                        deletedCount += 1;
                        if( resultStg.StatusCode == System.Net.HttpStatusCode.OK )
                        {
                            _ConsoleBuffer.Add( "Storage account " + inputs.StorageAccountName + " was deleted." );
                        }
                    },
                    _ConsoleBuffer );
            }
            if( deletedCount == 0 )
            {
                _ConsoleBuffer.Add( "No related Storage account was detected." );
            }

            //Deleting Stream Analytics jobs
            _ConsoleBuffer.Add( "Reading list of Stream Analytics jobs..." );
            StreamAnalyticsManagementClient saMgmt = new StreamAnalyticsManagementClient( inputs.Credentials );
            JobListResponse jobListResponse = saMgmt.StreamingJobs.ListJobsInSubscription( new JobListParameters { PropertiesToExpand = string.Empty } );
            deletedCount = 0;
            foreach( var job in jobListResponse.Value )
            {
                if( job.Name.StartsWith( inputs.NamePrefix ) )
                {
                    Job jobToAsk = job;
                    ConsoleHelper.AskAndPerformAction(
                        "Do you want to delete Stream Analytics job " + job.Name + "?",
                        "Are you sure you want to delete Stream Analytics job  " + job.Name + "?",
                        "Are you sure you do not want to delete namespace " + job.Name + "?",
                        ( ) =>
                        {
                            //we need to figure out wat resourceGroup this job belongs to
                            //--//
                            const string resourceGroupPath = "/resourceGroups/";
                            const string providersPath = "/providers/";

                            int resourceGroupPathIndex = jobToAsk.Id.IndexOf( resourceGroupPath, System.StringComparison.Ordinal );
                            int providersPathIndex = jobToAsk.Id.IndexOf( providersPath, System.StringComparison.Ordinal );
                            int resourceGroupIdStartIndex = resourceGroupPathIndex + resourceGroupPath.Length;

                            string resourceGroup = jobToAsk.Id.Substring( resourceGroupIdStartIndex, providersPathIndex - resourceGroupIdStartIndex );
                            //--//

                            deletedCount += 1;
                            _ConsoleBuffer.Add( "Sending request to delete " + jobToAsk.Name + " Stream Analytics job..." );
                            LongRunningOperationResponse response = saMgmt.StreamingJobs.Delete( resourceGroup, jobToAsk.Name );
                            if( response.Status == OperationStatus.Succeeded )
                            {
                                _ConsoleBuffer.Add( "Stream Analytics job " + jobToAsk.Name + " was deleted." );
                            }
                        },
                        _ConsoleBuffer );
                }
            }
            if( deletedCount == 0 )
            {
                _ConsoleBuffer.Add( "No Stream Analytics job was deleted." );
            }
        }
Esempio n. 2
0
        private void DeployASJob(SAJobConfigModel cfg)
        {
            // Get authentication token
            TokenCloudCredentials aadTokenCredentials =
                new TokenCloudCredentials(cfg.subscriptionID, GetAuthorizationHeader());

            // Create Stream Analytics management client
            StreamAnalyticsManagementClient client = new StreamAnalyticsManagementClient(aadTokenCredentials);

            // Create a Stream Analytics job
            JobCreateOrUpdateParameters jobCreateParameters = new JobCreateOrUpdateParameters()
            {
                Job = new Job()
                {
                    Name = cfg.streamAnalyticsJobName,
                    Location = cfg.location,
                    Properties = new JobProperties()
                    {
                        EventsOutOfOrderPolicy = EventsOutOfOrderPolicy.Adjust,
                        Sku = new Sku()
                        {
                            Name = "Standard"
                        }
                    }
                }
            };

            JobCreateOrUpdateResponse jobCreateResponse = client.StreamingJobs.CreateOrUpdate(cfg.resourceGroupName, jobCreateParameters);
            TempData["jobName"] = jobCreateResponse.Job.Name;
            TempData["jobCreationStatus"] = jobCreateResponse.StatusCode;

            // Create a Stream Analytics input source
            InputCreateOrUpdateParameters jobInputCreateParameters = new InputCreateOrUpdateParameters()
            {
                Input = new Input()
                {
                    Name = cfg.streamAnalyticsInputName,
                    Properties = new StreamInputProperties()
                    {
                        Serialization = new CsvSerialization
                        {
                            Properties = new CsvSerializationProperties
                            {
                                Encoding = "UTF8",
                                FieldDelimiter = ","
                            }
                        },
                        DataSource = new EventHubStreamInputDataSource
                        {
                            Properties = new EventHubStreamInputDataSourceProperties
                            {
                                EventHubName = cfg.EventHubName,
                                ServiceBusNamespace = cfg.ServiceBusNamespace,
                                SharedAccessPolicyKey = cfg.SharedAccessPolicyKey,
                                SharedAccessPolicyName = cfg.SharedAccessPolicyName,
                            }
                        }
                    }
                }
            };

            InputCreateOrUpdateResponse inputCreateResponse =
                client.Inputs.CreateOrUpdate(cfg.resourceGroupName, cfg.streamAnalyticsJobName, jobInputCreateParameters);
            TempData["jobInputName"] = inputCreateResponse.Input.Name;
            TempData["jobInputCreationStatus"] = inputCreateResponse.StatusCode;

        }
        private void CreateStreamAnalyticsJob( string nameSuffix, string query, string resourceGroupName, AzurePrepInputs azurePrepIn, 
            EventHubDescription ehInput, EventHubDescription ehOutput )
        {
            const string inputName = "DevicesInput";
            const string outputName = "output";

            string jobName = azurePrepIn.NamePrefix + nameSuffix;
            string transformationName = jobName + "-tr";

            var computeClient = new StreamAnalyticsManagementClient( azurePrepIn.Credentials );

            var serialization = new JsonSerialization
            {
                Type = "JSON",
                Properties = new JsonSerializationProperties
                {
                    Encoding = "UTF8"
                }
            };

            List<Input> jobInputs = new List<Input>
            {
                new Input
                {
                    Name = inputName,
                    Properties = new StreamInputProperties
                    {
                        DataSource = new EventHubStreamInputDataSource
                        {
                            Properties = new EventHubStreamInputDataSourceProperties
                            {
                                EventHubName = ehInput.Path,
                                ServiceBusNamespace = azurePrepIn.SBNamespace,
                                SharedAccessPolicyName = "StreamingAnalytics",
                                SharedAccessPolicyKey = ( ehInput.Authorization.First( ( d )
                                    => String.Equals( d.KeyName, "StreamingAnalytics", StringComparison.InvariantCultureIgnoreCase) ) as SharedAccessAuthorizationRule ).PrimaryKey,
                            }
                        },
                        Serialization = serialization
                    }
                }
            };

            List<Output> jobOutputs = new List<Output>
            {
                new Output
                {
                    Name = outputName,
                    Properties = new OutputProperties
                    {
                        DataSource = new EventHubOutputDataSource
                        {
                            Properties = new EventHubOutputDataSourceProperties
                            {
                                EventHubName = ehOutput.Path,
                                ServiceBusNamespace = azurePrepIn.SBNamespace,
                                SharedAccessPolicyName = "StreamingAnalytics",
                                SharedAccessPolicyKey = ( ehOutput.Authorization.First( ( d )
                                    => String.Equals( d.KeyName, "StreamingAnalytics", StringComparison.InvariantCultureIgnoreCase) ) as SharedAccessAuthorizationRule ).PrimaryKey,
                            }
                        },
                        Serialization = serialization
                    }
                }
            };

            bool created = true;
            try
            {
                var jobCreateResponse = computeClient.StreamingJobs.CreateOrUpdateAsync(
                    resourceGroupName,
                    new JobCreateOrUpdateParameters
                    {
                        Job = new Job
                        {
                            Name = jobName,
                            Location = azurePrepIn.Location,
                            Properties = new JobProperties
                            {
                                Sku = new Sku
                                {
                                    //should be "standart" according to https://msdn.microsoft.com/en-us/library/azure/dn834994.aspx
                                    Name = "standard"
                                },
                                EventsOutOfOrderPolicy = "drop",
                                EventsOutOfOrderMaxDelayInSeconds = 10,
                                Inputs = jobInputs,
                                Outputs = jobOutputs,
                                Transformation = new Transformation
                                {
                                    Name = transformationName,
                                    Properties = new TransformationProperties
                                    {
                                        Query = query,
                                        StreamingUnits = 1
                                    }
                                }
                            }
                        }

                    }
                    ).Result;
            }
            catch( Exception ex )
            {
                _ConsoleBuffer.Add( "Exception on creation Stream Analytics Job " + jobName + ": " + ex.Message );
                _ConsoleBuffer.Add( "Inner exception message: " + ex.InnerException.Message );
                created = false;
            }
            if( created )
            {
                _ConsoleBuffer.Add( "Stream Analytics job " + jobName + " created." );
            }
        }