//* ============================================================================ //Copyright 2014 Hewlett Packard //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. //You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 //Unless required by applicable law or agreed to in writing, software //distributed under the License is distributed on an "AS IS" BASIS, //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //See the License for the specific language governing permissions and //limitations under the License. //============================================================================ */ using System.Management.Automation; using OpenStack.Client.Powershell.Utility; namespace OpenStack.Client.Powershell.Cmdlets.Common { [Cmdlet(VerbsCommon.Set, "SP", SupportsShouldProcess = true)] public class SetServiceProviderCmdlet : BasePSCmdlet { private string _name; private SwitchParameter _setDefault = false; #region Properties //========================================================================================= /// <summary> /// /// </summary> //========================================================================================= [Parameter(ParameterSetName = "SetSP", Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Help Text")] [Alias("d")] [ValidateNotNullOrEmpty] public SwitchParameter SetDefault { get { return _setDefault; } set { _setDefault = value; } } //========================================================================================= /// <summary> /// /// </summary> //========================================================================================= [Parameter(Position = 0, ParameterSetName = "SetSP", Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = " ")] [Alias("n")] public string Name { get { return _name; } set { _name = value; } } #endregion #region Methods //========================================================================================= /// <summary> /// /// </summary> //========================================================================================= protected override void ProcessRecord() { var manager = new ConfigurationManager(); manager.Load(); var provider = manager.GetServiceProvider(this.Name); provider.IsDefault = this.SetDefault; this.WriteObject(""); this.WriteObject(" - Connecting to OpenStack Provider " + this.Name); this.InitialzeServiceProvider(provider); } //================================================================================================== /// <summary> /// /// </summary> /// <returns></returns> //================================================================================================== private bool DoesRequireCredentials() { return true; } //================================================================================================== /// <summary> /// /// </summary> //================================================================================================== private void InitialzeServiceProvider(ServiceProvider provider) { if (this.SetDefault) { var configManager = new ConfigurationManager(); configManager.Load(); configManager.SetDefaultServiceProvider(provider.Name); } this.WriteObject(" - Loading Service Provider extensions "); var manager = new ExtensionManager(this.SessionState, this.Context); manager.LoadExtension(provider); this.ShowAccountState(); } //======================================================================================================= /// <summary> /// /// </summary> //======================================================================================================= private void ShowAccountState() { // Show the User the new ServiceCatalog that we just received.. this.WriteObject(" - Success!"); this.WriteObject(""); // This is a hack for sure.. Need to move Zones into Vendor specific section. this.Context.CurrentRegion = "region-a.geo-1"; var capabilities = new AccountCapabilities(this.SessionState, this.Context, this.CoreClient, this); capabilities.WriteServices(); capabilities.WriteContainers(); } #endregion } }