private async Task ProcessKubernetes(string path, ProvisioningData provisioningData)
        {
            var outline = await LoadKubernetesOutline(path);

            await ProcessKubernetesProvisioningData(outline, provisioningData);

            await SaveKubernetesOutline(path, outline);
        }
        private async Task ProcessDocker(string path, ProvisioningData provisioningData)
        {
            var dockerOutline = await LoadDockerOutline(path);

            await ProcessDockerProvisioningData(dockerOutline, provisioningData);

            await SaveDockerOutline(path, dockerOutline);
        }
Beispiel #3
0
        private async Task ProcessDocker(string path, ProvisioningData provisioningData,
                                         IoTHubConnectionStrings iotHubConnectionStrings)
        {
            DockerOutline dockerOutline = await LoadDockerOutline(path);

            await ProcessExistingDockerOutline(dockerOutline, provisioningData, iotHubConnectionStrings);

            await SaveDockerOutline(path, dockerOutline);
        }
Beispiel #4
0
        private async Task GenerateKubernetes(string path, ProvisioningData provisioningData,
                                              IoTHubConnectionStrings iotHubConnectionStrings)
        {
            var outline = new KubernetesOutline();

            await GenerateKubernetesOutline(outline, provisioningData, iotHubConnectionStrings);

            await SaveKubernetesOutline(path, outline);
        }
Beispiel #5
0
        private async Task ProcessKubernetes(string path, ProvisioningData provisioningData,
                                             IoTHubConnectionStrings iotHubConnectionStrings)
        {
            var outline = await LoadKubernetesOutline(path);

            await ProcessExistingKubernetesOutline(outline, provisioningData, iotHubConnectionStrings);

            await SaveKubernetesOutline(path, outline);
        }
Beispiel #6
0
        private async Task GenerateDocker(string path, ProvisioningData provisioningData,
                                          IoTHubConnectionStrings iotHubConnectionStrings)
        {
            DockerOutline dockerOutline = new DockerOutline
            {
                version  = "3.4",
                services = new Dictionary <string, ServiceDescription>()
            };

            await GenerateDockerOutline(dockerOutline, provisioningData, iotHubConnectionStrings);

            await SaveDockerOutline(path, dockerOutline);
        }
Beispiel #7
0
        private async Task GenerateDockerOutline(DockerOutline outline, ProvisioningData provisioningData,
                                                 IoTHubConnectionStrings iotHubConnectionStrings)
        {
            await Task.Run(() =>
            {
                int serviceCount = 0;
                foreach (KeyValuePair <string, List <DeviceDescription> > provisioningEntry in provisioningData)
                {
                    iotHubConnectionStrings.TryGetValue(provisioningEntry.Key,
                                                        out string iotHubConnectionString);

                    foreach (DeviceDescription device in provisioningEntry.Value)
                    {
                        serviceCount++;
                        string deviceType = device.name.ToLower();
                        string serviceKey = $"sh.d.{deviceType}.{provisioningEntry.Key.ToLower()}";

                        var service = new ServiceDescription
                        {
                            image       = GetContainerImageName(deviceType),
                            environment = new List <EnvironmentSetting>()
                        };
                        service.environment.Add(new EnvironmentSetting {
                            name = HardwareIdSetting, value = device.hardwareId
                        });
                        service.environment.Add(new EnvironmentSetting {
                            name = DigitalTwinsManagementApiSetting, value = DigitalTwinsApiEndpoint
                        });
                        service.environment.Add(new EnvironmentSetting
                        {
                            name  = MessageIntervalSetting,
                            value = MessageInterval > 0 ? MessageInterval.ToString() : MessageIntervalDefault.ToString()
                        });
                        service.environment.Add(new EnvironmentSetting {
                            name = SasTokenSetting, value = device.SasToken
                        });
                        service.environment.Add(new EnvironmentSetting {
                            name = IoTHubConnectionStringSetting, value = iotHubConnectionString
                        });
                        service.environment.Add(new EnvironmentSetting
                        {
                            name  = StartupDelayInSecondsSetting,
                            value = Math.Floor(serviceCount / DigitalTwinsApiCallLimiter).ToString()
                        });

                        outline.services.Add(serviceKey, service);
                    }
                }
            });
        }
Beispiel #8
0
        static void Main(string[] args)
        {
            // Update these accordingly for your environment
            string tenantName  = ConfigurationManager.AppSettings["TenantName"];
            string ownwerEmail = ConfigurationManager.AppSettings["SiteColTestOwnerEmail"];

            //create site collection using the Tenant object. Notice that you will need to have valid app ID and secret for this one
            var    tenantAdminUri = new Uri(String.Format("https://{0}-admin.sharepoint.com", tenantName));
            string realm          = TokenHelper.GetRealmFromTargetUrl(tenantAdminUri);
            var    token          = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, tenantAdminUri.Authority, realm).AccessToken;

            using (var adminContext = TokenHelper.GetClientContextWithAccessToken(tenantAdminUri.ToString(), token))
            {
                // Let's randomize URL for your testing
                string webUrl     = Guid.NewGuid().ToString().Replace("-", "");
                var    webFullUrl = String.Format("https://{0}.sharepoint.com/{1}/{2}", tenantName, "sites", webUrl);

                if (!new SiteRequestManager().SiteURLAlreadyInUse(adminContext, webFullUrl))
                {
                    // Call the creation.
                    ProvisioningData data = new ProvisioningData();
                    data.TenantName = tenantName;
                    // Add request data in
                    data.RequestData = new SiteRequestData()
                    {
                        Title               = "Test Provisioning",
                        Template            = "STS#0",
                        Lcid                = 1033,
                        Owner               = "*****@*****.**",
                        StorageMaximumLevel = 100,
                        TimeZoneId          = 10, // US east coast
                        Url = webUrl
                    };
                    // Add branding data structure in
                    data.BrandingData = new SiteBrandingData()
                    {
                        LogoImagePath           = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources\\garagelogo.png"),
                        ThemeBackgrounImagePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources\\garagebg.jpg"),
                        ThemeColorFilePath      = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources\\garagewhite.spcolor"),
                        ThemeFontFilePath       = "",
                        ThemeName           = "Garage",
                        ThemeMasterPageName = "seattle.master"
                    };

                    // Process request for new site
                    new SiteRequestManager().ProcessSiteCreationRequest(adminContext, data);
                }
            }
        }
Beispiel #9
0
        // This function will get triggered/executed when a new message is written
        // on an Azure Queue called queue.
        public static void ProcessQueueMessage([QueueTrigger(SiteRequestManager.StorageQueueName)] ProvisioningData provisioningData, TextWriter log)
        {
            log.WriteLine(string.Format("Received new site request with URL of {0}.", provisioningData.RequestData.Url));

            try
            {
                //create site collection using the Tenant object. Notice that you will need to have valid app ID and secret for this one
                var    tenantAdminUri = new Uri(String.Format("https://{0}-admin.sharepoint.com", provisioningData.TenantName));
                string realm          = TokenHelper.GetRealmFromTargetUrl(tenantAdminUri);
                var    token          = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, tenantAdminUri.Authority, realm).AccessToken;
                using (var adminContext = TokenHelper.GetClientContextWithAccessToken(tenantAdminUri.ToString(), token))
                {
                    // Resolve full URL
                    var webFullUrl = String.Format("https://{0}.sharepoint.com/{1}/{2}", provisioningData.TenantName, "sites", provisioningData.RequestData.Url);

                    // Ensure that we do not overlap with existing URL
                    if (!new SiteRequestManager().SiteURLAlreadyInUse(adminContext, webFullUrl))
                    {
                        // Add branding data structure in
                        provisioningData.BrandingData = new SiteBrandingData()
                        {
                            LogoImagePath           = Path.Combine(Environment.GetEnvironmentVariable("WEBROOT_PATH"), "Resources\\garagelogo.png"),
                            ThemeBackgrounImagePath = Path.Combine(Environment.GetEnvironmentVariable("WEBROOT_PATH"), "Resources\\garagebg.jpg"),
                            ThemeColorFilePath      = Path.Combine(Environment.GetEnvironmentVariable("WEBROOT_PATH"), "Resources\\garagewhite.spcolor"),
                            ThemeFontFilePath       = "",
                            ThemeName           = "Garage",
                            ThemeMasterPageName = "seattle.master"
                        };

                        // Process request for new site
                        new SiteRequestManager().ProcessSiteCreationRequest(adminContext, provisioningData);
                    }

                    log.WriteLine(string.Format("Successfully created site collection at {0}.", webFullUrl));
                }
            }
            catch (Exception ex)
            {
                log.WriteLine(string.Format("Site collection creation to URL {0} failed with following details.", provisioningData.RequestData.Url));
                log.WriteLine(ex.ToString());
                throw;
            }
        }
Beispiel #10
0
        private async Task OnExecuteAsync()
        {
            ProvisioningData provisioningData = await LoadProvisioningData();

            IoTHubConnectionStrings iotHubConnectionStrings = await LoadIoTHubConnectionStrings();

            Console.Write("Processing Provisioning Data, please wait ");

            Task baseTask           = ProcessDocker(GetDockerBasePath(), provisioningData, iotHubConnectionStrings);
            Task overrideTask       = ProcessDocker(GetDockerOverridePath(), provisioningData, iotHubConnectionStrings);
            Task demoTask           = GenerateDocker(GetDockerDemoPath(), provisioningData, iotHubConnectionStrings);
            Task kubernetesTask     = ProcessKubernetes(GetKubernetesPath(), provisioningData, iotHubConnectionStrings);
            Task kubernetesDemoTask = GenerateKubernetes(GetKubernetesDemoPath(), provisioningData, iotHubConnectionStrings);

            await Task.WhenAll(baseTask, demoTask, overrideTask, kubernetesTask, kubernetesDemoTask);

            Console.WriteLine();
            Console.WriteLine();
        }
        private async Task OnExecuteAsync()
        {
            ConsoleSpinner spinner = new ConsoleSpinner();

            ProvisioningData provisioningData = await LoadProvisioningData();

            Console.Write("Processing Provisioning Data, please wait ");

            Task baseTask           = ProcessDocker(GetDockerBasePath(), provisioningData);
            Task demoTask           = ProcessDocker(GetDockerDemoPath(), provisioningData);
            Task overrideTask       = ProcessDocker(GetDockerOverridePath(), provisioningData);
            Task kubernetesTask     = ProcessKubernetes(GetKubernetesPath(), provisioningData);
            Task kubernetesDemoTask = ProcessKubernetes(GetKubernetesDemoPath(), provisioningData);

            await Task.WhenAll(new[] { baseTask, demoTask, overrideTask, kubernetesTask, kubernetesDemoTask });

            Console.WriteLine();
            Console.WriteLine();
        }
        public static UserEndpoint ConnectLyncServer(string userSipUri, string lyncServer, bool usingSso, string username, string password)
        {
            // Create the Lync Server UserEndpoint and attempt to connect to Lync Server
            Console.WriteLine("{0} Connecting to Lync Server... [{1}]", username, lyncServer);

            // Use the appropriate SipTransportType depending on current Lync Server deployment
            ClientPlatformSettings platformSettings = new ClientPlatformSettings("PersistentChat.Test", SipTransportType.Tls);
            CollaborationPlatform  collabPlatform   = new CollaborationPlatform(platformSettings);

            collabPlatform.AllowedAuthenticationProtocol = SipAuthenticationProtocols.Ntlm;

            // Initialize the platform
            collabPlatform.EndStartup(collabPlatform.BeginStartup(null, null));

            // You can also pass in the server's port # here.
            UserEndpointSettings userEndpointSettings = new UserEndpointSettings(userSipUri, lyncServer);

            // When usingSso is true use the current users credentials, otherwise use username and password
            userEndpointSettings.Credential = usingSso ? SipCredentialCache.DefaultCredential : new NetworkCredential(username, password);

            UserEndpoint userEndpoint = new UserEndpoint(collabPlatform, userEndpointSettings);

            // Login to Lync Server.
            userEndpoint.EndEstablish(userEndpoint.BeginEstablish(null, null));

            if (PersistentChatServerUri == null)
            {
                // Extract default Persistent Chat pool uri from inband
                ProvisioningData provisioningData =
                    userEndpoint.EndGetProvisioningData(userEndpoint.BeginGetProvisioningData(null, null));
                PersistentChatServerUri = new Uri(provisioningData.PersistentChatConfiguration.DefaultPersistentChatUri);
                Console.WriteLine("\t-- {0}PersistentChatServerUri:{1}", username, PersistentChatServerUri);
            }

            Console.WriteLine("\t{0} Connecting>>>>Success", username);
            return(userEndpoint);
        }
Beispiel #13
0
        /// <summary>
        ///  Can be used to test the storage queue message creation and to see the format what is created to the queue
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // Update  parameters accordingly based on our environment from app.config
            // Update these accordingly for your environment
            string tenantName  = ConfigurationManager.AppSettings["TenantName"];
            string ownwerEmail = ConfigurationManager.AppSettings["SiteColTestOwnerEmail"];

            // Create provisioning message objects for the storage queue
            ProvisioningData data = new ProvisioningData();

            data.TenantName = tenantName;
            // Add request data in
            data.RequestData = new SiteRequestData()
            {
                Title               = "Sample from queue",
                Template            = "STS#0",
                Lcid                = 1033,
                Owner               = ownwerEmail,
                StorageMaximumLevel = 100,
                TimeZoneId          = 16,
                Url = Guid.NewGuid().ToString().Replace("-", "")
            };
            // Add branding data structure in
            data.BrandingData = new SiteBrandingData()
            {
                LogoImagePath           = "",
                ThemeBackgrounImagePath = "",
                ThemeColorFilePath      = "",
                ThemeFontFilePath       = "",
                ThemeMasterPageName     = "",
                ThemeName = ""
            };

            new SiteRequestManager().AddConfigRequestToQueue(data,
                                                             CloudConfigurationManager.GetSetting("StorageConnectionString"));
        }
Beispiel #14
0
        private void AddRequestToQueue(string ownerEmail)
        {
            ProvisioningData data = new ProvisioningData();

            // Add request data in
            data.RequestData = new SiteRequestData()
            {
                Title               = txtTitle.Text,
                Template            = listTemplates.SelectedValue,
                Lcid                = uint.Parse(language.SelectedValue),
                Owner               = ownerEmail,
                StorageMaximumLevel = int.Parse(txtStorage.Text),
                TimeZoneId          = int.Parse(timeZone.SelectedValue),
                Url = txtUrl.Text
            };

            // Resolve tenant name
            var tenantStr = Page.Request["SPHostUrl"].ToLower().Replace("-my", "").Substring(8);

            data.TenantName = tenantStr.Substring(0, tenantStr.IndexOf("."));

            new SiteRequestManager().AddConfigRequestToQueue(data,
                                                             CloudConfigurationManager.GetSetting("StorageConnectionString"));
        }
Beispiel #15
0
        private async Task ProcessExistingKubernetesOutline(KubernetesOutline outline, ProvisioningData provisioningData,
                                                            IoTHubConnectionStrings iotHubConnectionStrings)
        {
            await Task.Run(() =>
            {
                foreach (var deployment in outline.Deployments)
                {
                    try
                    {
                        var metadata = deployment.metadata;

                        if (metadata != null)
                        {
                            var qualifiers = metadata.name.Split('.');
                            var room       = qualifiers.Last().ToLower();

                            if (provisioningData.ContainsKey(room))
                            {
                                foreach (var container in deployment.spec.template.spec.containers)
                                {
                                    var apiUrlSetting = container.env.FirstOrDefault(e => e.name == DigitalTwinsManagementApiSetting);
                                    if (apiUrlSetting != null)
                                    {
                                        apiUrlSetting.value = DigitalTwinsApiEndpoint;
                                    }

                                    var messageIntervalSetting = container.env.FirstOrDefault(e => e.name == MessageIntervalSetting);
                                    if (messageIntervalSetting != null)
                                    {
                                        messageIntervalSetting.value = MessageInterval > 0 ? MessageInterval.ToString() : MessageIntervalDefault.ToString();
                                    }

                                    var containerImage = FormatContainerImageName(container.image);
                                    container.image    = containerImage;

                                    if (iotHubConnectionStrings.ContainsKey(room))
                                    {
                                        string connectionString = iotHubConnectionStrings[room];
                                        var iotSetting          = container.env.FirstOrDefault(s => s.name == IoTHubConnectionStringSetting);

                                        if (iotSetting != null)
                                        {
                                            iotSetting.value = connectionString;
                                        }
                                    }

                                    DeviceDescription device = provisioningData[room].FirstOrDefault();
                                    if (device != null)
                                    {
                                        var sasTokenSetting = container.env.FirstOrDefault(e => e.name == SasTokenSetting);
                                        if (sasTokenSetting != null)
                                        {
                                            sasTokenSetting.value = device.SasToken;
                                        }

                                        var hardwareIdSetting = container.env.FirstOrDefault(e => e.name == HardwareIdSetting);
                                        if (hardwareIdSetting != null)
                                        {
                                            hardwareIdSetting.value = device.hardwareId;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            });
        }
        private async Task ProcessDockerProvisioningData(DockerOutline outline, ProvisioningData provisioningData)
        {
            await Task.Run(async() =>
            {
                string iotFile = await File.ReadAllTextAsync(IoTConnectionFile);
                Dictionary <string, Dictionary <string, string> > iotInfo = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(iotFile);

                foreach (var kvPair in outline.services)
                {
                    var service = kvPair.Value;

                    var containerImage = FormatContainerImageName(service.image);
                    service.image      = containerImage;

                    if (service.environment != null)
                    {
                        var apiUrlSetting = service.environment.FirstOrDefault(e => e.name == DigitalTwinsManagementApiSetting);
                        if (apiUrlSetting != null)
                        {
                            apiUrlSetting.value = DigitalTwinsApiEndpoint;
                        }

                        var messageIntervalSetting = service.environment.FirstOrDefault(e => e.name == MessageIntervalSetting);
                        if (messageIntervalSetting != null)
                        {
                            messageIntervalSetting.value = MessageInterval > 0 ? MessageInterval.ToString() : MessageIntervalDefault.ToString();
                        }

                        var qualifiers = kvPair.Key.Split('.');
                        var name       = qualifiers.Last().ToLower();

                        if (provisioningData.ContainsKey(name))
                        {
                            var serviceType = service.environment.FirstOrDefault(e => e.name == SensorTypeSetting);
                            if (serviceType != null)
                            {
                                if (iotInfo.ContainsKey(name))
                                {
                                    Dictionary <string, string> iotConnectionStrings = iotInfo[name];

                                    if (iotConnectionStrings.ContainsKey(serviceType.value.ToLower()))
                                    {
                                        var iotSetting = service.environment.FirstOrDefault(s => s.name == IoTHubConnectionStringSetting);

                                        if (iotSetting != null)
                                        {
                                            iotSetting.value = iotConnectionStrings[serviceType.value.ToLower()];
                                        }
                                    }
                                }

                                DeviceDescription device = provisioningData[name].FirstOrDefault(d => d.sensors.Any(s => s.dataType.ToLower() == serviceType.value.ToLower()));
                                if (device != null)
                                {
                                    var sasTokenSetting = service.environment.FirstOrDefault(e => e.name == SasTokenSetting);
                                    if (sasTokenSetting != null)
                                    {
                                        sasTokenSetting.value = device.SasToken;
                                    }

                                    var hardwareIdSetting = service.environment.FirstOrDefault(e => e.name == HardwareIdSetting);
                                    if (hardwareIdSetting != null)
                                    {
                                        hardwareIdSetting.value = device.hardwareId;
                                    }
                                }
                            }
                        }
                    }
                }
            });
        }
Beispiel #17
0
        private async Task GenerateKubernetesOutline(KubernetesOutline outline, ProvisioningData provisioningData,
                                                     IoTHubConnectionStrings iotHubConnectionStrings)
        {
            await Task.Run(() =>
            {
                int deploymentCount = 0;
                foreach (KeyValuePair <string, List <DeviceDescription> > provisioningEntry in provisioningData)
                {
                    iotHubConnectionStrings.TryGetValue(provisioningEntry.Key,
                                                        out string iotHubConnectionString);

                    foreach (DeviceDescription device in provisioningEntry.Value)
                    {
                        deploymentCount++;
                        string deviceType = device.name.ToLower();
                        string serviceKey = $"sh.d.{deviceType}.{provisioningEntry.Key.ToLower()}";

                        var container = new KubernetesContainer
                        {
                            name            = $"device-{deviceType}",
                            image           = GetContainerImageName(deviceType),
                            imagePullPolicy = "Always",
                            env             = new List <KubernetesEnvironmentSetting>()
                        };
                        container.env.Add(new KubernetesEnvironmentSetting {
                            name = HardwareIdSetting, value = device.hardwareId
                        });
                        container.env.Add(new KubernetesEnvironmentSetting {
                            name = IoTHubConnectionStringSetting, value = iotHubConnectionString
                        });
                        container.env.Add(new KubernetesEnvironmentSetting {
                            name = DigitalTwinsManagementApiSetting, value = DigitalTwinsApiEndpoint
                        });
                        container.env.Add(new KubernetesEnvironmentSetting
                        {
                            name  = MessageIntervalSetting,
                            value = MessageInterval > 0 ? MessageInterval.ToString() : MessageIntervalDefault.ToString()
                        });
                        container.env.Add(new KubernetesEnvironmentSetting {
                            name = SasTokenSetting, value = device.SasToken
                        });
                        container.env.Add(new KubernetesEnvironmentSetting
                        {
                            name  = StartupDelayInSecondsSetting,
                            value = Math.Floor(deploymentCount / DigitalTwinsApiCallLimiter).ToString()
                        });

                        var template = new KubernetesTemplate
                        {
                            metadata = new KubernetesMetadata {
                                labels = new KubernetesLabels {
                                    app = serviceKey, component = serviceKey
                                }
                            },
                            spec = new KubernetesSpec {
                                containers = new List <KubernetesContainer> {
                                    container
                                }
                            }
                        };
                        var spec = new KubernetesSpec
                        {
                            template = template
                        };
                        var deployment = new KubernetesDeployment
                        {
                            apiVersion = "extensions/v1beta1",
                            kind       = "Deployment",
                            metadata   = new KubernetesMetadata {
                                name = serviceKey
                            },
                            spec = spec
                        };

                        outline.Deployments.Add(deployment);
                    }
                }
            });
        }
        private async Task ProcessKubernetesProvisioningData(KubernetesOutline outline, ProvisioningData provisioningData)
        {
            await Task.Run(async() =>
            {
                string iotFile = await File.ReadAllTextAsync(IoTConnectionFile);
                Dictionary <string, Dictionary <string, string> > iotInfo = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(iotFile);

                foreach (var deployment in outline.Deployments)
                {
                    try
                    {
                        var metadata = deployment.metadata;

                        if (metadata != null)
                        {
                            var qualifiers = metadata.name.Split('.');
                            var room       = qualifiers.Last().ToLower();

                            if (provisioningData.ContainsKey(room))
                            {
                                foreach (var container in deployment.spec.template.spec.containers)
                                {
                                    var apiUrlSetting = container.env.FirstOrDefault(e => e.name == DigitalTwinsManagementApiSetting);
                                    if (apiUrlSetting != null)
                                    {
                                        apiUrlSetting.value = DigitalTwinsApiEndpoint;
                                    }

                                    var messageIntervalSetting = container.env.FirstOrDefault(e => e.name == MessageIntervalSetting);
                                    if (messageIntervalSetting != null)
                                    {
                                        messageIntervalSetting.value = MessageInterval > 0 ? MessageInterval.ToString() : MessageIntervalDefault.ToString();
                                    }

                                    var containerImage = FormatContainerImageName(container.image);
                                    container.image    = containerImage;

                                    var typeSetting = container.env.FirstOrDefault(s => s.name == SensorTypeSetting);

                                    if (typeSetting != null)
                                    {
                                        if (iotInfo.ContainsKey(room))
                                        {
                                            Dictionary <string, string> iotConnectionStrings = iotInfo[room];

                                            if (iotConnectionStrings.ContainsKey(typeSetting.value.ToLower()))
                                            {
                                                var iotSetting = container.env.FirstOrDefault(s => s.name == IoTHubConnectionStringSetting);

                                                if (iotSetting != null)
                                                {
                                                    iotSetting.value = iotConnectionStrings[typeSetting.value.ToLower()];
                                                }
                                            }
                                        }

                                        DeviceDescription device = provisioningData[room].FirstOrDefault(d => d.sensors.Any(s => s.dataType.ToLower() == typeSetting.value.ToLower()));
                                        if (device != null)
                                        {
                                            var sasTokenSetting = container.env.FirstOrDefault(e => e.name == SasTokenSetting);
                                            if (sasTokenSetting != null)
                                            {
                                                sasTokenSetting.value = device.SasToken;
                                            }

                                            var hardwareIdSetting = container.env.FirstOrDefault(e => e.name == HardwareIdSetting);
                                            if (hardwareIdSetting != null)
                                            {
                                                hardwareIdSetting.value = device.hardwareId;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            });
        }
Beispiel #19
0
        private async Task ProcessExistingDockerOutline(DockerOutline outline, ProvisioningData provisioningData,
                                                        IoTHubConnectionStrings iotHubConnectionStrings)
        {
            await Task.Run(() =>
            {
                foreach (var kvPair in outline.services)
                {
                    var service = kvPair.Value;

                    var containerImage = FormatContainerImageName(service.image);
                    service.image      = containerImage;

                    if (service.environment != null)
                    {
                        var apiUrlSetting = service.environment.FirstOrDefault(e => e.name == DigitalTwinsManagementApiSetting);
                        if (apiUrlSetting != null)
                        {
                            apiUrlSetting.value = DigitalTwinsApiEndpoint;
                        }

                        var messageIntervalSetting = service.environment.FirstOrDefault(e => e.name == MessageIntervalSetting);
                        if (messageIntervalSetting != null)
                        {
                            messageIntervalSetting.value = MessageInterval > 0 ? MessageInterval.ToString() : MessageIntervalDefault.ToString();
                        }

                        var qualifiers = kvPair.Key.Split('.');
                        var name       = qualifiers.Last().ToLower();

                        if (provisioningData.ContainsKey(name))
                        {
                            if (iotHubConnectionStrings.ContainsKey(name))
                            {
                                string iotConnectionString = iotHubConnectionStrings[name];
                                var iotSetting             = service.environment.FirstOrDefault(s => s.name == IoTHubConnectionStringSetting);

                                if (iotSetting != null)
                                {
                                    iotSetting.value = iotConnectionString;
                                }
                            }

                            DeviceDescription device = provisioningData[name].FirstOrDefault();
                            if (device != null)
                            {
                                var sasTokenSetting = service.environment.FirstOrDefault(e => e.name == SasTokenSetting);
                                if (sasTokenSetting != null)
                                {
                                    sasTokenSetting.value = device.SasToken;
                                }

                                var hardwareIdSetting = service.environment.FirstOrDefault(e => e.name == HardwareIdSetting);
                                if (hardwareIdSetting != null)
                                {
                                    hardwareIdSetting.value = device.hardwareId;
                                }
                            }
                        }
                    }
                }
            });
        }