Exemplo n.º 1
0
        //--//

        public bool GetInputs(out CloudWebDeployInputs result)
        {
            result = new CloudWebDeployInputs( );

            result.Credentials = AzureConsoleHelper.GetUserSubscriptionCredentials( );
            if (result.Credentials == null)
            {
                result = null;
                return(false);
            }

            ServiceBusNamespace selectedNamespace = AzureConsoleHelper.SelectNamespace(result.Credentials);

            if (selectedNamespace == null)
            {
                result = null;
                Console.WriteLine("Quiting...");
                return(false);
            }
            result.NamePrefix = selectedNamespace.Name;
            if (result.NamePrefix.EndsWith("-ns"))
            {
                result.NamePrefix = result.NamePrefix.Substring(0, result.NamePrefix.Length - 3);
            }

            result.SBNamespace        = selectedNamespace.Name;
            result.StorageAccountName = result.NamePrefix.ToLowerInvariant( ) + "storage";

            result.Location = selectedNamespace.Region;

            return(true);
        }
Exemplo n.º 2
0
        //--//

        public bool GetInputs(out ClearResourcesInputs result)
        {
            result = new ClearResourcesInputs( );

            result.Credentials = AzureConsoleHelper.GetUserSubscriptionCredentials( );
            if (result.Credentials == null)
            {
                result = null;
                return(false);
            }

            ServiceBusNamespace selectedNamespace = AzureConsoleHelper.SelectNamespace(result.Credentials,
                                                                                       "Please select namespace you want to clear resources for: ", "Enter manually (if Namespace was deleted but there are resources with the same name prefix).");

            if (selectedNamespace == null)
            {
                result = null;
                Console.WriteLine("Quiting...");
                return(false);
            }
            result.NamePrefix = selectedNamespace.Name;

            if (selectedNamespace.Region != null)
            {
                result.NamespaceExists = true;
                result.Location        = selectedNamespace.Region;
            }

            result.SBNamespace        = result.NamePrefix + "-ns";
            result.StorageAccountName = result.NamePrefix.ToLowerInvariant( ) + "storage";

            return(true);
        }
Exemplo n.º 3
0
        //--//

        public bool GetInputs(out CloudWebDeployInputs result)
        {
            result = new CloudWebDeployInputs( );

            result.Credentials = AzureConsoleHelper.GetUserSubscriptionCredentials( );
            if (result.Credentials == null)
            {
                result = null;
                return(false);
            }

            ServiceBusNamespace selectedNamespace = AzureConsoleHelper.SelectNamespace(result.Credentials);

            if (selectedNamespace == null)
            {
                result = null;
                Console.WriteLine("Quiting...");
                return(false);
            }
            result.NamePrefix = selectedNamespace.Name;
            result.Location   = selectedNamespace.Region;

            result.SBNamespace        = result.NamePrefix + "-ns";
            result.StorageAccountName = result.NamePrefix.ToLowerInvariant( ) + "storage";

            result.EventHubNameDevices = "ehdevices";
            result.EventHubNameAlerts  = "ehalerts";

            return(true);
        }
Exemplo n.º 4
0
        //--//

        public bool GetInputs(out CloudWebDeployInputs result)
        {
            result = new CloudWebDeployInputs( );

            result.Credentials = AzureConsoleHelper.GetUserSubscriptionCredentials( );
            if (result.Credentials == null)
            {
                result = null;
                return(false);
            }

            ServiceBusNamespace selectedNamespace = AzureConsoleHelper.SelectNamespace(result.Credentials);

            if (selectedNamespace == null)
            {
                result = null;
                Console.WriteLine("Quiting...");
                return(false);
            }
            result.NamePrefix = selectedNamespace.Name;
            result.Location   = selectedNamespace.Region;

/*
 *          Console.WriteLine( "Need to select or not Transform flag." );
 *          Console.WriteLine( "If selected, the input and output file name will be \"web.config\" placed in Web project location." );
 *          Console.WriteLine( "Otherwise, input file name will be \"web.PublishTemplate.config\" and output - \"" +
 *              String.Format("web.{0}.config", result.NamePrefix) + "\".");
 *
 *          for( ;; )
 *          {
 *              Console.WriteLine( "Do you want to use Transform flag? (y/n)" );
 *
 *              string answer = Console.ReadLine( );
 *              string request = "not use";
 *              result.Transform = false;
 *              if( !string.IsNullOrEmpty( answer ) && answer.ToLower( ).StartsWith( "y" ) )
 *              {
 *                  result.Transform = true;
 *                  request = "use";
 *              }
 *              if( ConsoleHelper.Confirm( "Are you sure you want to " + request + " Transform flag?" ) )
 *              {
 *                  break;
 *              }
 *          }
 */
            result.SBNamespace        = result.NamePrefix + "-ns";
            result.StorageAccountName = result.NamePrefix.ToLowerInvariant( ) + "storage";

            result.EventHubNameDevices = "ehdevices";
            result.EventHubNameAlerts  = "ehalerts";

            //result.WebSiteDirectory = "..\\..\\..\\..\\WebSite\\ConnectTheDotsWebSite"; // Default for running the tool from the bin/debug or bin/release directory (i.e within VS)
            return(true);
        }
Exemplo n.º 5
0
        //--//

        public bool GetInputs(out AzurePrepInputs result)
        {
            result             = new AzurePrepInputs( );
            result.Credentials = AzureConsoleHelper.GetUserSubscriptionCredentials( );

            if (result.Credentials == null)
            {
                result = null;
                return(false);
            }

            for ( ;;)
            {
                Console.WriteLine("Enter a name for Service Bus Namespace (only letters and digits, less than 17 chars long).");
                Console.WriteLine("(Note that fully qualified path may also be subject to further length restrictions.)");
                result.NamePrefix = Console.ReadLine( );
                if (string.IsNullOrEmpty(result.NamePrefix) || !CheckNamePrefix(result.NamePrefix))
                {
                    Console.WriteLine("Namespace prefix should contain only letters and digits and have length less than 17.");
                    continue;
                }
                if (ConsoleHelper.Confirm("Are you sure you want to create a namespace called " + result.NamePrefix + "?"))
                {
                    break;
                }
            }

            if (string.IsNullOrEmpty(result.NamePrefix))
            {
                result = null;
                return(false);
            }

            result.Location = SelectRegion(result);

            result.SBNamespace        = result.NamePrefix + "-ns";
            result.StorageAccountName = result.NamePrefix.ToLowerInvariant( ) + "storage";

            result.EventHubNameDevices = "ehdevices";
            result.EventHubNameAlerts  = "ehalerts";

            return(true);
        }
Exemplo n.º 6
0
        bool Run( )
        {
            CloudWebDeployInputs inputs = null;

            if (!GetInputs(out inputs))
            {
                return(false);
            }

            Console.WriteLine("Retrieving namespace metadata...");
            // Create Namespace
            ServiceBusManagementClient sbMgmt = new ServiceBusManagementClient(inputs.Credentials);

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

            NamespaceManager nsManager = NamespaceManager.CreateFromConnectionString(nsConnectionString);

            EventHubDescription ehDevices = AzureConsoleHelper.SelectEventHub(nsManager, inputs.Credentials);

            var serviceNamespace = inputs.SBNamespace;
            var hubName          = ehDevices.Path;

            var sharedAccessAuthorizationRule = ehDevices.Authorization.FirstOrDefault((d)
                                                                                       => d.Rights.Contains(AccessRights.Listen)) as SharedAccessAuthorizationRule;

            if (sharedAccessAuthorizationRule == null)
            {
                Console.WriteLine("Cannot locate Authorization rule for WebSite key.");
                return(false);
            }

            var receiverKeyName = sharedAccessAuthorizationRule.KeyName;
            var receiverKey     = sharedAccessAuthorizationRule.PrimaryKey;
            //Console.WriteLine("Starting temperature processor with {0} partitions.", partitionCount);

            CancellationTokenSource cts = new CancellationTokenSource( );

            int            closedReceivers  = 0;
            AutoResetEvent receiversStopped = new AutoResetEvent(false);

            MessagingFactory factory = MessagingFactory.Create(ServiceBusEnvironment.CreateServiceUri("sb", serviceNamespace, ""),
                                                               new MessagingFactorySettings
            {
                TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(receiverKeyName, receiverKey),
                TransportType = TransportType.Amqp
            });

            EventHubClient        eventHubClient        = factory.CreateEventHubClient(hubName);
            EventHubConsumerGroup eventHubConsumerGroup = eventHubClient.GetDefaultConsumerGroup( );

            int partitionCount = ehDevices.PartitionCount;

            for (int i = 0; i < partitionCount; i++)
            {
                Task.Factory.StartNew((state) =>
                {
                    try
                    {
                        _ConsoleBuffer.Add(string.Format("Starting worker to process partition: {0}", state));

                        var receiver = eventHubConsumerGroup.CreateReceiver(state.ToString( ), DateTime.UtcNow);

                        _ConsoleBuffer.Add(string.Format("Waiting for start receiving messages: {0} ...", state));

                        while (true)
                        {
                            // Receive could fail, I would need a retry policy etc...
                            var messages = receiver.Receive(10);
                            foreach (var message in messages)
                            {
                                //var eventBody = Newtonsoft.Json.JsonConvert.DeserializeObject<TemperatureEvent>(Encoding.Default.GetString(message.GetBytes()));
                                //Console.WriteLine("{0} [{1}] Temperature: {2}", DateTime.Now, message.PartitionKey, eventBody.Temperature);
                                _ConsoleBuffer.Add(message.PartitionKey + " sent message:" + Encoding.Default.GetString(message.GetBytes( )));
                            }

                            if (cts.IsCancellationRequested)
                            {
                                Console.WriteLine("Stopping: {0}", state);
                                receiver.Close( );
                                if (Interlocked.Increment(ref closedReceivers) >= partitionCount)
                                {
                                    receiversStopped.Set();
                                }
                                break;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        _ConsoleBuffer.Add(ex.Message);
                    }
                }, i);
            }

            Console.ReadLine( );
            cts.Cancel( );

            //waiting for all receivers to stop
            receiversStopped.WaitOne( );

            bool saveToFile;

            for ( ;;)
            {
                Console.WriteLine("Do you want to save received data to file? (y/n)");

                string answer  = Console.ReadLine( );
                string request = "do not";

                saveToFile = false;
                if (!string.IsNullOrEmpty(answer) && answer.ToLower( ).StartsWith("y"))
                {
                    saveToFile = true;
                    request    = "";
                }
                if (ConsoleHelper.Confirm("Are you sure you " + request + " want to save received data?"))
                {
                    break;
                }
            }
            if (saveToFile)
            {
                string fileName     = inputs.SBNamespace + DateTime.UtcNow.ToString("_d_MMM_h_mm") + ".log";
                string filePath     = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                string fileFullName = filePath + @"\" + fileName;
                if (_ConsoleBuffer.FlushToFile(fileFullName))
                {
                    Console.WriteLine("Output was saved to your desktop, at " + fileFullName + " file.");
                }
            }


            Console.WriteLine("Wait for all receivers to close and then press ENTER.");
            Console.ReadLine( );

            return(true);
        }