Beispiel #1
0
        public HttpResponseMessage Delete(string id)
        {
            var docKey        = "Raven/Counters/" + id;
            var configuration = CountersLandlord.CreateTenantConfiguration(id);

            if (configuration == null)
            {
                return(GetEmptyMessage());
            }

            if (!IsCounterStorageNameExists(id))
            {
                return(GetMessageWithString(string.Format("Counter Storage {0} doesn't exist!", id), HttpStatusCode.NotFound));
            }

            Database.Documents.Delete(docKey, null, null);

            bool isHardDeleteNeeded = CheckQueryStringParameterResult("hard-delete");

            if (isHardDeleteNeeded)
            {
                IOExtensions.DeleteDirectory(configuration.CountersDataDirectory);
            }

            return(GetEmptyMessage());
        }
        private MessageWithStatusCode DeleteCounterStorage(string id, bool isHardDeleteNeeded)
        {
            //get configuration even if the counters is disabled
            var configuration = CountersLandlord.CreateTenantConfiguration(id, true);

            if (configuration == null)
            {
                return new MessageWithStatusCode {
                           ErrorCode = HttpStatusCode.NotFound, Message = "Counter storage wasn't found"
                }
            }
            ;

            var docKey = Constants.Counter.Prefix + id;

            SystemDatabase.Documents.Delete(docKey, null, null);

            if (isHardDeleteNeeded && configuration.RunInMemory == false)
            {
                IOExtensions.DeleteDirectory(configuration.Counter.DataDirectory);
            }

            return(new MessageWithStatusCode());
        }
        public HttpResponseMessage ResourceDrives(string name, string type)
        {
            ResourceType resourceType;

            if (Enum.TryParse(type, out resourceType) == false)
            {
                return(GetMessageWithString("Unknown resourceType:" + type, HttpStatusCode.BadRequest));
            }

            string[] drives = null;
            InMemoryRavenConfiguration config;

            switch (resourceType)
            {
            case ResourceType.Database:
                config = DatabasesLandlord.CreateTenantConfiguration(name);
                if (config == null)
                {
                    return(GetMessageWithString("Unable to find database named: " + name, HttpStatusCode.NotFound));
                }
                drives = FindUniqueDrives(new[] { config.IndexStoragePath,
                                                  config.Storage.Esent.JournalsStoragePath,
                                                  config.Storage.Voron.JournalsStoragePath,
                                                  config.DataDirectory });
                break;

            case ResourceType.FileSystem:
                config = FileSystemsLandlord.CreateTenantConfiguration(name);
                if (config == null)
                {
                    return(GetMessageWithString("Unable to find filesystem named: " + name, HttpStatusCode.NotFound));
                }
                drives = FindUniqueDrives(new[] { config.FileSystem.DataDirectory,
                                                  config.FileSystem.IndexStoragePath,
                                                  config.Storage.Esent.JournalsStoragePath,
                                                  config.Storage.Voron.JournalsStoragePath });
                break;

            case ResourceType.Counter:
                config = CountersLandlord.CreateTenantConfiguration(name);
                if (config == null)
                {
                    return(GetMessageWithString("Unable to find counter named: " + name, HttpStatusCode.NotFound));
                }
                drives = FindUniqueDrives(new[] { config.Counter.DataDirectory,
                                                  config.Storage.Esent.JournalsStoragePath,
                                                  config.Storage.Voron.JournalsStoragePath,
                                                  config.DataDirectory });
                break;

            case ResourceType.TimeSeries:
                config = TimeSeriesLandlord.CreateTenantConfiguration(name);
                if (config == null)
                {
                    return(GetMessageWithString("Unable to find time series named: " + name, HttpStatusCode.NotFound));
                }
                drives = FindUniqueDrives(new[] { config.TimeSeries.DataDirectory,
                                                  config.Storage.Esent.JournalsStoragePath,
                                                  config.Storage.Voron.JournalsStoragePath,
                                                  config.DataDirectory });
                break;
            }

            return(GetMessageWithObject(drives));
        }