Exemplo n.º 1
0
        public InstanceActionResult Start(PackageFile packageFile, StitchInstance stitchInstance)
        {
            if (string.IsNullOrEmpty(stitchInstance?.Id))
            {
                return(InstanceActionResult.BadRequest());
            }

            string         instanceId = stitchInstance.Id;
            IStitchAdaptor adaptor    = null;

            try
            {
                stitchInstance.State = InstanceStateType.Stopped;
                adaptor = GetOrCreateStitchAdaptor(packageFile, stitchInstance);
                if (adaptor == null)
                {
                    stitchInstance.State = InstanceStateType.Missing;
                    return(InstanceActionResult.NotFound(instanceId));
                }

                // TODO: On Stitch start, we should send it information about the application topology
                // TODO: We should also send application topology change notifications to every Stitch
                // involved in the affected application.

                bool started = adaptor.Start();
                if (started)
                {
                    stitchInstance.State = InstanceStateType.Started;
                }

                return(InstanceActionResult.Result(instanceId, started, stitchInstance));
            }
            catch (Exception e)
            {
                stitchInstance.State = InstanceStateType.Error;
                return(InstanceActionResult.Failure(stitchInstance.Id, adaptor != null, e));
            }
        }