Esempio n. 1
0
        public async Task <Guid> Create(
            Guid tenantId,
            string name,
            NodeCredentials conn
            )
        {
            await connectionService.TestConnection(conn);

            var node = new Node
            {
                TenantId   = tenantId,
                Host       = conn.host,
                Enabled    = true,
                Id         = Guid.NewGuid(),
                Name       = name,
                Port       = conn.port,
                Username   = conn.username,
                Password   = string.IsNullOrWhiteSpace(conn.password) ? null : await crypto.EncryptSecret(conn.password),
                PrivateKey = string.IsNullOrWhiteSpace(conn.privateKey) ? null : await crypto.EncryptSecret(conn.privateKey)
            };

            await ctx.Nodes.AddAsync(node);

            await ctx.SaveChangesAsync();

            await nodeUpdater.NotifyAboutNodeChange(node.Id);

            return(node.Id);
        }
Esempio n. 2
0
        public async Task Update(Guid id, string?name, string?directory, bool?serviceEnabled, string?content)
        {
            var compose = await ctx.Composes
                          .Include(x => x.Current)
                          .Include(x => x.Deployments)
                          .FirstOrDefaultAsync(x => x.Id == id);

            if (compose == null)
            {
                throw new ComposeNotFoundException();
            }

            if (name != null)
            {
                compose.Name = name;
            }

            if (directory != null || serviceEnabled != null)
            {
                var version = new ComposeVersion
                {
                    Id             = Guid.NewGuid(),
                    Content        = content ?? compose.Current.Content,
                    Directory      = directory ?? compose.Current.Directory,
                    ServiceEnabled = serviceEnabled ?? compose.Current.ServiceEnabled,
                    ServiceName    = name != null?ServiceNameFromCompose(name) : compose.Current.ServiceName,
                                         ComposeId = compose.Id
                };

                await ctx.ComposeVersions.AddAsync(version);

                compose.CurrentId = version.Id;
            }

            await ctx.SaveChangesAsync();

            foreach (var deployment in compose.Deployments)
            {
                await nodeUpdater.NotifyAboutNodeChange(deployment.NodeId);
            }
        }
Esempio n. 3
0
        public async Task <Guid> Create(Guid nodeId, Guid composeId)
        {
            var nodeQuery    = ctx.Nodes.Where(x => x.Id == nodeId).FutureValue();
            var composeQuery = ctx.Composes.Where(x => x.Id == composeId).FutureValue();

            var node = await nodeQuery.ValueAsync();

            if (node == null)
            {
                throw new NodeNotFoundException();
            }

            var compose = await composeQuery.ValueAsync();

            if (compose == null)
            {
                throw new ComposeNotFoundException();
            }

            var deployment = new Deployment
            {
                TenantId = node.TenantId,
                Id       = Guid.NewGuid(),
                Node     = node,
                Compose  = compose,
                Enabled  = true
            };

            await ctx.Deployments.AddAsync(deployment);

            await ctx.SaveChangesAsync();

            await nodeUpdater.NotifyAboutNodeChange(node.Id);

            return(deployment.Id);
        }