public void Clear()
 {
     _contexts.Clear();
     EnvironmentTable.Clear();
     SubscriptionTable.Clear();
     AccountTable.Clear();
 }
示例#2
0
        private void Initialize(AzureRmProfile profile)
        {
            EnvironmentTable.Clear();
            // Adding predefined environments
            foreach (var env in AzureEnvironment.PublicEnvironments)
            {
                EnvironmentTable[env.Key] = env.Value;
            }

            Contexts.Clear();
            DefaultContextKey = "Default";
            if (profile != null)
            {
                foreach (var environment in profile.EnvironmentTable)
                {
                    EnvironmentTable[environment.Key] = environment.Value;
                }

                foreach (var context in profile.Contexts)
                {
                    this.Contexts.Add(context.Key, context.Value);
                }

                DefaultContextKey = profile.DefaultContextKey ?? (profile.Contexts.Any() ? null : "Default");
            }
        }
示例#3
0
        public bool TrySetEnvironment(IAzureEnvironment environment, out IAzureEnvironment mergedEnvironment)
        {
            bool result = false;

            mergedEnvironment = environment;
            if (environment != null && !AzureEnvironment.PublicEnvironments.ContainsKey(environment.Name))
            {
                if (EnvironmentTable.ContainsKey(environment.Name))
                {
                    mergedEnvironment = mergedEnvironment.Merge(EnvironmentTable[environment.Name]);
                }

                EnvironmentTable[environment.Name] = mergedEnvironment;
                result = true;
                foreach (var context in Contexts)
                {
                    if (context.Value.Environment != null &&
                        context.Value.Environment.Name == environment.Name)
                    {
                        context.Value.Environment = mergedEnvironment;
                    }
                }
            }

            return(result);
        }
示例#4
0
        /// <summary>
        /// Writes the profile using the specified file provider
        /// </summary>
        /// <param name="provider">The file provider used to save the profile</param>
        public void Save(IFileProvider provider, bool serializeCache = true)
        {
            foreach (string env in AzureEnvironment.PublicEnvironments.Keys)
            {
                EnvironmentTable.Remove(env);
            }

            try
            {
                TryRemoveContext(Constants.DefaultValue);
                string contents     = ToString(serializeCache);
                string diskContents = string.Empty;
                diskContents = provider.CreateReader().ReadToEnd();

                if (diskContents != contents)
                {
                    var writer = provider.CreateWriter();
                    writer.Write(contents);
                    writer.Flush();

                    // When writing to a stream, ensure that the file is truncated
                    // so that previous data is overwritten
                    provider.Stream.SetLength(provider.Stream.Position);
                }
            }
            finally
            {
                // Adding back predefined environments
                foreach (AzureEnvironment env in AzureEnvironment.PublicEnvironments.Values)
                {
                    EnvironmentTable[env.Name] = env;
                }
            }
        }
示例#5
0
        private void Initialize(AzureRmProfile profile)
        {
            EnvironmentTable.Clear();
            // Adding predefined environments
            foreach (var env in AzureEnvironment.PublicEnvironments)
            {
                EnvironmentTable[env.Key] = env.Value;
            }

            Contexts.Clear();
            DefaultContextKey = "Default";
            if (profile != null)
            {
                foreach (var environment in profile.EnvironmentTable)
                {
                    EnvironmentTable[environment.Key] = environment.Value;
                }

                foreach (var context in profile.Contexts)
                {
                    context.Value.TokenCache = AzureSession.Instance.TokenCache;
                    this.Contexts.Add(context.Key, context.Value);
                }

                DefaultContextKey = profile.DefaultContextKey ?? "Default";
            }
        }
        private void Load(string path)
        {
            this.ProfilePath = path;

            if (!AzureSession.Instance.DataStore.DirectoryExists(AzureSession.Instance.ProfileDirectory))
            {
                AzureSession.Instance.DataStore.CreateDirectory(AzureSession.Instance.ProfileDirectory);
            }

            if (AzureSession.Instance.DataStore.FileExists(ProfilePath))
            {
                string         contents   = AzureSession.Instance.DataStore.ReadFileAsText(ProfilePath);
                var            oldProfile = JsonConvert.DeserializeObject <LegacyAzureRmProfile>(contents);
                AzureRmProfile profile;
                if (!oldProfile.TryConvert(out profile))
                {
                    profile = JsonConvert.DeserializeObject <IAzureContextContainer>(contents, new AzureRmProfileConverter()) as AzureRmProfile;
                }
                Debug.Assert(profile != null);
                EnvironmentTable.Clear();
                foreach (var environment in profile.EnvironmentTable)
                {
                    EnvironmentTable[environment.Key] = environment.Value;
                }

                Contexts.Clear();
                foreach (var context in profile.Contexts)
                {
                    this.Contexts.Add(context.Key, context.Value);
                }
            }
        }
示例#7
0
 /// <summary>
 /// Set the contaienr to its defautl state
 /// </summary>
 public void Clear()
 {
     Contexts.Clear();
     DefaultContext = new AzureContext();
     EnvironmentTable.Clear();
     foreach (var environment in AzureEnvironment.PublicEnvironments)
     {
         EnvironmentTable.Add(environment.Key, environment.Value);
     }
 }
示例#8
0
        public bool TryRemoveEnvironment(string name, out IAzureEnvironment environment)
        {
            bool result = false;

            if (TryGetEnvironment(name, out environment))
            {
                result = EnvironmentTable.Remove(name);
            }

            return(result);
        }
示例#9
0
        /// <summary>
        /// Set the contaienr to its default state
        /// </summary>
        public void Clear()
        {
            this.GetTokenCache()?.Clear();
            Contexts.Clear();
            DefaultContextKey = "Default";
            DefaultContext    = new AzureContext();
            EnvironmentTable.Clear();
            foreach (var environment in AzureEnvironment.PublicEnvironments)
            {
                EnvironmentTable.Add(environment.Key, environment.Value);
            }

            AzureRmProfileProvider.Instance.SetTokenCacheForProfile(this);
        }
示例#10
0
        public bool TrySetEnvironment(IAzureEnvironment environment, out IAzureEnvironment mergedEnvironment)
        {
            bool result = false;

            mergedEnvironment = environment;
            if (environment != null && !AzureEnvironment.PublicEnvironments.ContainsKey(environment.Name))
            {
                if (EnvironmentTable.ContainsKey(environment.Name))
                {
                    mergedEnvironment = mergedEnvironment.Merge(EnvironmentTable[environment.Name]);
                }

                EnvironmentTable[environment.Name] = mergedEnvironment;
                result = true;
            }

            return(result);
        }
示例#11
0
        /// <summary>
        /// Writes profile to a specified path.
        /// </summary>
        /// <param name="path">File path on disk to save profile to</param>
        public void Save(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                return;
            }

            // Removing predefined environments
            foreach (string env in AzureEnvironment.PublicEnvironments.Keys)
            {
                EnvironmentTable.Remove(env);
            }

            try
            {
                string contents     = ToString();
                string diskContents = string.Empty;
                if (AzureSession.Instance.DataStore.FileExists(path))
                {
                    diskContents = AzureSession.Instance.DataStore.ReadFileAsText(path);
                }

                if (diskContents != contents)
                {
                    AzureSession.Instance.DataStore.WriteFile(path, contents);
                }
            }
            finally
            {
                // Adding back predefined environments
                foreach (AzureEnvironment env in AzureEnvironment.PublicEnvironments.Values)
                {
                    EnvironmentTable[env.Name] = env;
                }
            }
        }
示例#12
0
 public bool HasEnvironment(string name)
 {
     return(EnvironmentTable.ContainsKey(name));
 }