Skip to content

Commit

Permalink
* commits related to RavenDB-1520, RavenDB-1539
Browse files Browse the repository at this point in the history
* updates to Nuget packages
  • Loading branch information
myarichuk committed Dec 26, 2013
1 parent 7c90bef commit 95eb98b
Show file tree
Hide file tree
Showing 28 changed files with 11,730 additions and 64 deletions.
1 change: 1 addition & 0 deletions .nuget/packages.config
Expand Up @@ -3,6 +3,7 @@
<package id="NuGet.Build" version="2.7.2" />
<package id="NuGet.CommandLine" version="2.7.3" />
<package id="psake" version="4.3.0.0" />
<package id="psake" version="4.3.1.0" />
<package id="StatLight" version="1.6.4375" />
<package id="xunit.runners" version="1.9.2" />
</packages>
72 changes: 48 additions & 24 deletions Raven.Backup/BackupOperation.cs
@@ -1,19 +1,15 @@
using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using Raven.Abstractions.Connection;
using Raven.Abstractions.Data;
using Raven.Client;
using Raven.Abstractions.Data;
using Raven.Client.Connection;
using Raven.Client.Document;
using Raven.Imports.Newtonsoft.Json.Linq;
using Raven.Json.Linq;
using System;
using System.Net;
using System.Threading;

namespace Raven.Backup
{
using Raven.Abstractions.Connection;

public class BackupOperation : IDisposable
{
private DocumentStore store;
Expand All @@ -35,20 +31,48 @@ public BackupOperation()
public bool InitBackup()
{
ServerUrl = ServerUrl.TrimEnd('/');
try //precaution - to show error properly just in case
{
var serverUri = new Uri(ServerUrl);
if ((String.IsNullOrWhiteSpace(serverUri.PathAndQuery) || serverUri.PathAndQuery.Equals("/")) &&
String.IsNullOrWhiteSpace(Database))
Database = Constants.SystemDatabase;

store = new DocumentStore {Url = ServerUrl, DefaultDatabase = Database, ApiKey = ApiKey};
store.Initialize();

var json = @"{ ""BackupLocation"": """ + BackupPath.Replace("\\", "\\\\") + @""" }";
var serverHostname = serverUri.Scheme + Uri.SchemeDelimiter + serverUri.Host + ":" + serverUri.Port;

store = new DocumentStore { Url = serverHostname, DefaultDatabase = Database, ApiKey = ApiKey };
store.Initialize();
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
try
{
store.Dispose();
}
// ReSharper disable once EmptyGeneralCatchClause
catch (Exception) { }
return false;
}


var backupRequest = new
{
BackupLocation = BackupPath.Replace("\\", "\\\\"),
DatabaseDocument = new DatabaseDocument { Id = Database }
};

var json = RavenJObject.FromObject(backupRequest).ToString();

var url = "/admin/backup";
if (Incremental)
url += "?incremental=true";
var req = CreateRequest(url, "POST");

req.Write(json);
try
{
var req = CreateRequest(url, "POST");

req.Write(json);

Console.WriteLine("Sending json {0} to {1}", json, ServerUrl);

var response = req.ReadResponseJson();
Expand All @@ -66,20 +90,20 @@ public bool InitBackup()
private HttpJsonRequest CreateRequest(string url, string method)
{
var uriString = ServerUrl;
if (string.IsNullOrWhiteSpace(Database) == false)
if (string.IsNullOrWhiteSpace(Database) == false && !Database.Equals(Constants.SystemDatabase, StringComparison.OrdinalIgnoreCase))
{
uriString += "/databases/" + Database;
}

uriString += url;
if (Incremental)
uriString += "?incremental=true";
var req = store.JsonRequestFactory.CreateHttpJsonRequest(new CreateHttpJsonRequestParams(null, uriString, method, new OperationCredentials(ApiKey, CredentialCache.DefaultCredentials), store.Conventions));

var req = store.JsonRequestFactory.CreateHttpJsonRequest(new CreateHttpJsonRequestParams(null, uriString, method, new OperationCredentials(ApiKey, CredentialCache.DefaultCredentials), store.Conventions));
Console.WriteLine("Request url - " + uriString);
if (Timeout.HasValue)
{
req.Timeout = TimeSpan.FromMilliseconds(Timeout.Value);
}

return req;
}

Expand All @@ -105,7 +129,7 @@ public void WaitForBackup()
Thread.Sleep(1000);
status = GetStatusDoc();
}

foreach (var msg in status.Messages)
{
Console.WriteLine("[{0}] {1}", msg.Timestamp, msg.Message);
Expand Down Expand Up @@ -144,4 +168,4 @@ public void Dispose()
_store.Dispose();
}
}
}
}
7 changes: 7 additions & 0 deletions Raven.Backup/Raven.Backup.csproj
Expand Up @@ -38,6 +38,12 @@
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>RavenDB.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CompilerServices.AsyncTargetingPack.Net4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
Expand Down Expand Up @@ -75,6 +81,7 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="RavenDB.snk" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
Expand Down
Binary file added Raven.Backup/RavenDB.snk
Binary file not shown.
3 changes: 2 additions & 1 deletion Raven.Client.Lightweight/Document/DocumentStore.cs
Expand Up @@ -444,7 +444,8 @@ public override IDocumentStore Initialize()
#if !SILVERLIGHT && !NETFX_CORE && !MONO
RecoverPendingTransactions();

if (string.IsNullOrEmpty(DefaultDatabase) == false)
if (string.IsNullOrEmpty(DefaultDatabase) == false &&
DefaultDatabase.Equals(Constants.SystemDatabase) == false) //system database exists anyway
{
DatabaseCommands.ForSystemDatabase().GlobalAdmin.EnsureDatabaseExists(DefaultDatabase, ignoreFailures: true);
}
Expand Down
9 changes: 6 additions & 3 deletions Raven.Database/Raven.Database.csproj
Expand Up @@ -118,6 +118,9 @@
<Reference Include="Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Data.OData.5.6.0\lib\net40\Microsoft.Data.OData.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Data.Services.Client, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.0\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin, Version=2.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.Owin.2.0.2\lib\net45\Microsoft.Owin.dll</HintPath>
Expand All @@ -129,11 +132,11 @@
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.2.0\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAzure.Storage, Version=2.1.0.3, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\WindowsAzure.Storage.2.1.0.3\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
<HintPath>..\packages\WindowsAzure.Storage.3.0.1.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
</Reference>
<Reference Include="Mono.Cecil, Version=0.9.5.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
Expand Down
10 changes: 6 additions & 4 deletions Raven.Database/Server/Controllers/Admin/AdminController.cs
Expand Up @@ -28,6 +28,7 @@ public async Task<HttpResponseMessage> Backup()
bool incrementalBackup;
if (bool.TryParse(incrementalString, out incrementalBackup) == false)
incrementalBackup = false;

Database.StartBackup(backupRequest.BackupLocation, incrementalBackup, backupRequest.DatabaseDocument);

return GetEmptyMessage(HttpStatusCode.Created);
Expand Down Expand Up @@ -64,10 +65,11 @@ public async Task<HttpResponseMessage> Restore()

if (string.IsNullOrWhiteSpace(databaseName))
{
return
GetMessageWithString(
"A database name must be supplied if the restore location does not contain a valid Database.Document file",
HttpStatusCode.BadRequest);
var errorMessage = (databaseDocument == null || String.IsNullOrWhiteSpace(databaseDocument.Id))
? "Database.Document file is invalid - database name was not found and not supplied in the request (Id property is missing or null). This is probably a bug - should never happen."
: "A database name must be supplied if the restore location does not contain a valid Database.Document file";

return GetMessageWithString(errorMessage,HttpStatusCode.BadRequest);
}

if (databaseName == Constants.SystemDatabase)
Expand Down
@@ -1,5 +1,7 @@
using System.Net;
using System;
using System.Net;
using System.Net.Http;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Web.Http;
using Raven.Abstractions.Data;
Expand All @@ -15,6 +17,13 @@ public class AdminDatabasesController : BaseAdminController
[HttpGet][Route("admin/databases/{*id}")]
public HttpResponseMessage DatabasesGet(string id)
{
if (IsSystemDatabase(id))
{
//fetch fake (empty) system database document
var systemDatabaseDocument = new DatabaseDocument { Id = Constants.SystemDatabase };
return GetMessageWithObject(systemDatabaseDocument);
}

var docKey = "Raven/Databases/" + id;

var document = Database.Get(docKey, null);
Expand All @@ -28,26 +37,34 @@ public HttpResponseMessage DatabasesGet(string id)
}

[HttpPut][Route("admin/databases/{*id}")]
public async Task DatabasesPut(string id)
public async Task<HttpResponseMessage> DatabasesPut(string id)
{
if (IsSystemDatabase(id))
return GetMessageWithString("System Database document cannot be changed", HttpStatusCode.Forbidden);

var docKey = "Raven/Databases/" + id;
var dbDoc = await ReadJsonObjectAsync<DatabaseDocument>();
DatabasesLandlord.Protect(dbDoc);
var json = RavenJObject.FromObject(dbDoc);
json.Remove("Id");

Database.Put(docKey, null, json, new RavenJObject(), null);

return GetEmptyMessage();
}

[HttpDelete][Route("admin/databases/{*id}")]
public void DatabasesDelete(string id)
public HttpResponseMessage DatabasesDelete(string id)
{
if (IsSystemDatabase(id))
return GetMessageWithString("System Database document cannot be deleted", HttpStatusCode.Forbidden);

var docKey = "Raven/Databases/" + id;
var configuration = DatabasesLandlord.CreateTenantConfiguration(id);
var databasedocument = Database.Get(docKey, null);

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

Database.Delete(docKey, null, null);
bool result;
Expand All @@ -64,6 +81,9 @@ public void DatabasesDelete(string id)
IOExtensions.DeleteDirectory(dbDoc.Settings[Constants.RavenLogsPath]);
}
}

return GetEmptyMessage();
}

}
}
12 changes: 11 additions & 1 deletion Raven.Database/Server/Controllers/Admin/BaseAdminController.cs
@@ -1,8 +1,11 @@
using System.Linq;
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Runtime.CompilerServices;
using System.Security.Principal;
using System.Threading.Tasks;
using Raven.Abstractions.Data;
using Raven.Abstractions.Util;
using Raven.Database.Extensions;
using Raven.Database.Server.Security;
Expand All @@ -19,6 +22,13 @@ protected virtual WindowsBuiltInRole[] AdditionalSupportedRoles
}
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
protected bool IsSystemDatabase(string databaseId)
{
return databaseId.Equals(Constants.SystemDatabase, StringComparison.OrdinalIgnoreCase);
}


public override async Task<HttpResponseMessage> ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext controllerContext, System.Threading.CancellationToken cancellationToken)
{
InnerInitialization(controllerContext);
Expand Down
5 changes: 3 additions & 2 deletions Raven.Database/packages.config
Expand Up @@ -7,9 +7,10 @@
<package id="Microsoft.AspNet.WebApi.Owin" version="5.0.0" targetFramework="net45" />
<package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" />
<package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" />
<package id="Microsoft.Data.Services.Client" version="5.6.0" targetFramework="net45" />
<package id="Microsoft.Owin" version="2.0.2" targetFramework="net45" />
<package id="Microsoft.Owin.Hosting" version="2.0.2" targetFramework="net45" />
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.2.0" targetFramework="net45" />
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
<package id="Mono.Cecil" version="0.9.5.4" targetFramework="net45" />
<package id="Newtonsoft.Json" version="5.0.8" targetFramework="net45" />
<package id="Owin" version="1.0" targetFramework="net45" />
Expand All @@ -18,5 +19,5 @@
<package id="Rx-Linq" version="2.2.2" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.2" targetFramework="net45" />
<package id="System.Spatial" version="5.6.0" targetFramework="net45" />
<package id="WindowsAzure.Storage" version="2.1.0.3" targetFramework="net45" />
<package id="WindowsAzure.Storage" version="3.0.1.0" targetFramework="net45" />
</packages>
10 changes: 4 additions & 6 deletions Raven.Server/App.config
Expand Up @@ -24,12 +24,10 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Kent.Boogaart.HelperTrinity" publicKeyToken="cc96fa93a217f7a1" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.5.0.0" newVersion="1.5.0.0" />
<bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
</dependentAssembly>



<dependentAssembly>

<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.3.0" newVersion="2.1.3.0" />
</dependentAssembly>
Expand All @@ -47,7 +45,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
<bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
Expand Down
3 changes: 2 additions & 1 deletion Raven.Studio.Html5/Scripts/typings/jquery/jquery.d.ts
Expand Up @@ -863,7 +863,8 @@ interface JQuery {
toggle(showOrHide: boolean): JQuery;

// Events
bind(eventType: string, eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery;
bind(eventType: string, eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery;
bind(eventType: string, handler: (eventObject: JQueryEventObject) => any): JQuery;
bind(eventType: string, eventData: any, preventBubble: boolean): JQuery;
bind(eventType: string, preventBubble: boolean): JQuery;
bind(...events: any[]): JQuery;
Expand Down
6 changes: 3 additions & 3 deletions Raven.Studio.Html5/packages.config
Expand Up @@ -8,14 +8,14 @@
<package id="durandal.TypeScript.DefinitelyTyped" version="0.2.2" targetFramework="net45" />
<package id="FontAwesome" version="4.0.3.1" targetFramework="net45" />
<package id="jQuery" version="2.0.3" targetFramework="net45" />
<package id="jquery.TypeScript.DefinitelyTyped" version="0.4.7" targetFramework="net45" />
<package id="jquery.TypeScript.DefinitelyTyped" version="0.4.8" targetFramework="net45" />
<package id="knockout.postbox.TypeScript.DefinitelyTyped" version="0.0.6" targetFramework="net45" />
<package id="knockout.TypeScript.DefinitelyTyped" version="0.4.6" targetFramework="net45" />
<package id="knockout.TypeScript.DefinitelyTyped" version="0.4.7" targetFramework="net45" />
<package id="Knockout-DelegatedEvents" version="0.1.2" targetFramework="net45" />
<package id="knockoutjs" version="3.0.0" targetFramework="net45" />
<package id="Knockout-Postbox" version="0.4.2" targetFramework="net45" />
<package id="Moment.js" version="2.4.0" targetFramework="net45" />
<package id="moment.TypeScript.DefinitelyTyped" version="0.1.3" targetFramework="net45" />
<package id="moment.TypeScript.DefinitelyTyped" version="0.1.4" targetFramework="net45" />
<package id="RequireJS" version="2.1.9" targetFramework="net45" />
<package id="RequireJS.Text" version="2.0.7" targetFramework="net45" />
<package id="Twitter.Bootstrap" version="3.0.1.1" targetFramework="net45" />
Expand Down
7 changes: 4 additions & 3 deletions Raven.Studio/Raven.Studio.csproj
Expand Up @@ -84,11 +84,12 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\SharedLibs\Silverlight\ActiproSoftwareSilverlightStudio\ActiproSoftware.Text.Silverlight.dll</HintPath>
</Reference>
<Reference Include="Kent.Boogaart.HelperTrinity, Version=1.5.0.0, Culture=neutral, PublicKeyToken=cc96fa93a217f7a1, processorArchitecture=MSIL">
<Reference Include="Kent.Boogaart.HelperTrinity, Version=2.0.1.0, Culture=neutral, PublicKeyToken=cc96fa93a217f7a1, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Kent.Boogaart.HelperTrinity.1.5.0.0\lib\sl50\Kent.Boogaart.HelperTrinity.dll</HintPath>
<HintPath>..\packages\Kent.Boogaart.HelperTrinity.2.0.1\lib\portable-win8+net403+sl40+wp+xbox40\Kent.Boogaart.HelperTrinity.dll</HintPath>
</Reference>
<Reference Include="Kent.Boogaart.KBCsv">
<Reference Include="Kent.Boogaart.KBCsv, Version=1.4.0.0, Culture=neutral, PublicKeyToken=cc96fa93a217f7a1, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Kent.Boogaart.KBCsv.1.4.0.0\lib\sl40\Kent.Boogaart.KBCsv.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
Expand Down

0 comments on commit 95eb98b

Please sign in to comment.