/// <summary> /// Initializes a new instance of AzureSMProfile and loads its content from specified path. /// Any errors generated in the process are stored in ProfileLoadErrors collection. /// </summary> /// <param name="path">Location of profile file on disk.</param> public AzureSMProfile(string path) : this() { ProfilePath = path; ProfileLoadErrors = new List <string>(); if (!AzureSession.DataStore.DirectoryExists(AzureSession.ProfileDirectory)) { AzureSession.DataStore.CreateDirectory(AzureSession.ProfileDirectory); } if (AzureSession.DataStore.FileExists(ProfilePath)) { string contents = AzureSession.DataStore.ReadFileAsText(ProfilePath); IProfileSerializer serializer; if (CloudException.IsXml(contents)) { serializer = new XmlProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } else if (CloudException.IsJson(contents)) { serializer = new JsonProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } } }
/// <summary> /// Writes profile to a specified path. /// </summary> /// <param name="path"></param> public void Save(string path) { if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException("path"); } // Removing predefined environments foreach (string env in AzureEnvironment.PublicEnvironments.Keys) { Environments.Remove(env); } JsonProfileSerializer jsonSerializer = new JsonProfileSerializer(); string contents = jsonSerializer.Serialize(this); string diskContents = string.Empty; if (AzureSession.DataStore.FileExists(path)) { diskContents = AzureSession.DataStore.ReadFileAsText(path); } if (diskContents != contents) { AzureSession.DataStore.WriteFile(path, contents); } }
public void ProfileSaveDoesNotSerializeContext() { var dataStore = new MockDataStore(); var currentProfile = new AzureProfile(Path.Combine(AzureSession.ProfileDirectory, AzureSession.ProfileFile)); AzureSession.DataStore = dataStore; var client = new ProfileClient(currentProfile); var tenant = Guid.NewGuid().ToString(); var environment = new AzureEnvironment { Name = "testCloud", Endpoints = { { AzureEnvironment.Endpoint.ActiveDirectory, "http://contoso.com" } } }; var account = new AzureAccount { Id = "*****@*****.**", Type = AzureAccount.AccountType.User, Properties = { { AzureAccount.Property.Tenants, tenant } } }; var sub = new AzureSubscription { Account = account.Id, Environment = environment.Name, Id = new Guid(), Name = "Contoso Test Subscription", Properties = { { AzureSubscription.Property.Tenants, tenant } } }; client.AddOrSetEnvironment(environment); client.AddOrSetAccount(account); client.AddOrSetSubscription(sub); currentProfile.Save(); var profileFile = currentProfile.ProfilePath; string profileContents = dataStore.ReadFileAsText(profileFile); var readProfile = JsonConvert.DeserializeObject<Dictionary<string, object>>(profileContents); Assert.False(readProfile.ContainsKey("Context")); AzureProfile parsedProfile = new AzureProfile(); var serializer = new JsonProfileSerializer(); Assert.True(serializer.Deserialize(profileContents, parsedProfile)); Assert.NotNull(parsedProfile); Assert.NotNull(parsedProfile.Environments); Assert.True(parsedProfile.Environments.ContainsKey(environment.Name)); Assert.NotNull(parsedProfile.Accounts); Assert.True(parsedProfile.Accounts.ContainsKey(account.Id)); Assert.NotNull(parsedProfile.Subscriptions); Assert.True(parsedProfile.Subscriptions.ContainsKey(sub.Id)); }
/// <summary> /// Initializes a new instance of AzureProfile and loads its content from specified path. /// Any errors generated in the process are stored in ProfileLoadErrors collection. /// </summary> /// <param name="path">Location of profile file on disk.</param> public AzureProfile(string path) { ProfilePath = path; Environments = new Dictionary <string, AzureEnvironment>(StringComparer.InvariantCultureIgnoreCase); Subscriptions = new Dictionary <Guid, AzureSubscription>(); Accounts = new Dictionary <string, AzureAccount>(StringComparer.InvariantCultureIgnoreCase); ProfileLoadErrors = new List <string>(); if (!AzureSession.DataStore.DirectoryExists(AzureSession.ProfileDirectory)) { AzureSession.DataStore.CreateDirectory(AzureSession.ProfileDirectory); } if (AzureSession.DataStore.FileExists(ProfilePath)) { string contents = AzureSession.DataStore.ReadFileAsText(ProfilePath); IProfileSerializer serializer; if (CloudException.IsXml(contents)) { serializer = new XmlProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } else if (CloudException.IsJson(contents)) { serializer = new JsonProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } } LoadDefaultEnvironments(); }
public override string ToString() { JsonProfileSerializer jsonSerializer = new JsonProfileSerializer(); return(jsonSerializer.Serialize(this)); }
public override string ToString() { JsonProfileSerializer jsonSerializer = new JsonProfileSerializer(); return jsonSerializer.Serialize(this); }
/// <summary> /// Initializes a new instance of AzureSMProfile and loads its content from specified path. /// Any errors generated in the process are stored in ProfileLoadErrors collection. /// </summary> /// <param name="path">Location of profile file on disk.</param> public AzureSMProfile(string path) : this() { ProfilePath = path; ProfileLoadErrors = new List<string>(); if (!AzureSession.DataStore.DirectoryExists(AzureSession.ProfileDirectory)) { AzureSession.DataStore.CreateDirectory(AzureSession.ProfileDirectory); } if (AzureSession.DataStore.FileExists(ProfilePath)) { string contents = AzureSession.DataStore.ReadFileAsText(ProfilePath); IProfileSerializer serializer; if (CloudException.IsXml(contents)) { serializer = new XmlProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } else if (CloudException.IsJson(contents)) { serializer = new JsonProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } } }