Example #1
0
        public static void Initialize(IContainerFactory containerFactory, IModule[] modules = null)
        {
            IEnumerable <Registration> registrations = Enumerable.Empty <Registration>();

            if (modules != null)
            {
                registrations = modules.SelectMany(m => m.GetRegistrations());
            }
            _container = containerFactory.CreateContainer(registrations);
        }
Example #2
0
        public static void Initialize(IContainerFactory containerFactory, IModule[] modules = null)
        {
            IEnumerable <Registration> registrations = Enumerable.Empty <Registration>();

            if (modules != null)
            {
                registrations = ((IEnumerable <IModule>)modules).SelectMany <IModule, Registration>((Func <IModule, IEnumerable <Registration> >)(m => m.GetRegistrations()));
            }
            ObjectFactory._container = containerFactory.CreateContainer(registrations);
        }
Example #3
0
        public INoobotHost Start()
        {
            INoobotContainer container = _containerFactory.CreateContainer();

            _noobotCore = container.GetNoobotCore();

            Console.WriteLine("Connecting...");
            _noobotCore
            .Connect()
            .ContinueWith(task =>
            {
                if (!task.IsCompleted || task.IsFaulted)
                {
                    Console.WriteLine($"Error connecting to Slack: {task.Exception}");
                }
            });

            return(this);
        }
Example #4
0
 public ElmsHandler(IContainerFactory factory)
 {
     _container = factory.CreateContainer();
     _logger = _container.Resolve<ILogger>();
 }
Example #5
0
        public IContainer CreateContainer(ContainerSpec containerSpec)
        {
            Guard.NotNull(containerSpec, "containerSpec");

            UndoStack  undoStack = new UndoStack();
            IContainer container;

            try
            {
                var handle = containerSpec.Handle;
                if (String.IsNullOrEmpty(handle))
                {
                    handle = handleHelper.GenerateHandle();
                }

                var id = handleHelper.GenerateId(handle);

                var user = ContainerUser.Create(userManager, id);
                undoStack.Push(() => user.Delete());

                user.CreateProfile();
                undoStack.Push(() => user.DeleteProfile());

                var directory = directoryFactory.Create(fileSystem, containerBasePath, id);
                directory.CreateSubdirectories(user);
                undoStack.Push(directory.Destroy);

                directory.CreateBindMounts(containerSpec.BindMounts, user);

                var jobObject = new JobObject(id);
                undoStack.Push(() => jobObject.Dispose());

                var containerHostClient = containerHostService.StartContainerHost(id, directory, jobObject, user.GetCredential());
                undoStack.Push(() => containerHostClient.Shutdown());


                var constrainedProcessRunner = new ConstrainedProcessRunner(containerHostClient);
                undoStack.Push(() => constrainedProcessRunner.Dispose());

                var processHelper    = new ProcessHelper();
                var dependencyHelper = new ContainerHostDependencyHelper();

                var diskQuotaControl = diskQuotaManager.CreateDiskQuotaControl(directory, user.SID);

                container = containerFactory.CreateContainer(
                    id,
                    handle,
                    user,
                    directory,
                    containerPropertiesService,
                    tcpPortManager,
                    jobObject,
                    diskQuotaControl,
                    processRunner,
                    constrainedProcessRunner,
                    processHelper,
                    containerSpec.Environment,
                    dependencyHelper,
                    containerSpec.BindMounts);

                containerPropertiesService.SetProperties(container, containerSpec.Properties);
                lock (containers)
                {
                    containers.Add(container);
                }
            }
            catch (Exception e)
            {
                try
                {
                    undoStack.UndoAll();
                    throw;
                }
                catch (AggregateException undoException)
                {
                    throw new AggregateException(new[] { e, undoException });
                }
            }

            return(container);
        }