示例#1
0
        public void TriggersCatalog_PathFromResourceId()
        {
            var triggerId    = Guid.NewGuid().ToString();
            var expectedPath = Common.EnvironmentVariables.QueueTriggersPath + @"\" + triggerId + ".bite";
            var path         = TriggersCatalog.PathFromResourceId(triggerId);

            Assert.AreEqual(expectedPath, path);
        }
示例#2
0
        public WorkerContext(IArgs processArgs, IResourceCatalogProxy resourceCatalogProxy, ITriggersCatalog triggerCatalog)
        {
            var catalog = triggerCatalog;

            _path                 = TriggersCatalog.PathFromResourceId(processArgs.TriggerId);
            _serverUri            = processArgs.ServerEndpoint;
            _triggerQueue         = catalog.LoadQueueTriggerFromFile(_path);
            _resourceCatalogProxy = resourceCatalogProxy;
        }
示例#3
0
        public override StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Fetch Triggers for Deploy Service", GlobalConstants.WarewolfInfo);

                values.TryGetValue("resourceID", out var resourceIdString);
                if (resourceIdString == null)
                {
                    throw new InvalidDataContractException("resourceID is missing");
                }
                if (!Guid.TryParse(resourceIdString.ToString(), out var resourceId))
                {
                    throw new InvalidDataContractException("resourceID is not a valid GUID.");
                }

                var triggerQueues = TriggersCatalog.LoadQueuesByResourceId(resourceId);
                var message       = new CompressedExecuteMessage
                {
                    HasError = false
                };
                message.SetMessage(serializer.Serialize(triggerQueues));

                return(serializer.SerializeToBuilder(message));
            }
            catch (Exception err)
            {
                Dev2Logger.Error("Fetch Triggers For Deploy Failed: " + err.Message, GlobalConstants.WarewolfError);
                var msg = new CompressedExecuteMessage {
                    HasError = true, Message = new StringBuilder(err.Message)
                };
                return(serializer.SerializeToBuilder(msg));
            }
        }
示例#4
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Save Triggers Service", GlobalConstants.WarewolfInfo);
                values.TryGetValue("resourceID", out var resourceIdString);
                if (resourceIdString == null)
                {
                    throw new InvalidDataContractException("resourceID is missing");
                }
                if (!Guid.TryParse(resourceIdString.ToString(), out var resourceId))
                {
                    throw new InvalidDataContractException("resourceID is not a valid GUID.");
                }
                values.TryGetValue("resourcePath", out var resourcePathString);
                if (resourcePathString == null)
                {
                    throw new InvalidDataContractException("resourcePath is missing");
                }
                values.TryGetValue("triggerDefinitions", out var triggerDefinitionMessage);
                if (triggerDefinitionMessage == null || triggerDefinitionMessage.Length == 0)
                {
                    throw new InvalidDataContractException("triggerDefinitions is missing");
                }
                var res = new ExecuteMessage
                {
                    HasError = false,
                    Message  = serializer.SerializeToBuilder("")
                };

                var decompressedMessage = serializer.Deserialize <CompressedExecuteMessage>(triggerDefinitionMessage).GetDecompressedMessage();
                var triggerQueues       = serializer.Deserialize <List <ITriggerQueue> >(decompressedMessage);
                var resource            = ResourceCatalog.GetResource(GlobalConstants.ServerWorkspaceID, resourceId);
                if (resource == null)
                {
                    var message = $"Resource {resourcePathString} has been deleted. No Triggers can be saved for this resource.";
                    res.Message = serializer.SerializeToBuilder(message);
                }
                else
                {
                    var resourcePath = resource.GetResourcePath(GlobalConstants.ServerWorkspaceID);
                    if (!resourcePath.Equals(resourcePathString.ToString(), StringComparison.InvariantCultureIgnoreCase))
                    {
                        var message = $"Resource {resourcePathString} has changed to {resourcePath}. Triggers have been saved for this resource.";
                        res.Message = serializer.SerializeToBuilder(message);
                    }
                    TriggersCatalog.SaveTriggers(resourceId, triggerQueues);
                }
                return(serializer.SerializeToBuilder(res));
            }
            catch (Exception err)
            {
                Dev2Logger.Error(err, GlobalConstants.WarewolfError);
                var res = new ExecuteMessage {
                    HasError = true, Message = new StringBuilder(err.Message)
                };
                return(serializer.SerializeToBuilder(res));
            }
        }