
Port from New-CLI repo with MVS working. Changed naming from Openstack to OpenStack across the board to match API.. Trying to comit Change-Id: I575d847e38c903e1ae308b55d0f0768bd33fa7e1
384 lines
15 KiB
C#
384 lines
15 KiB
C#
///* ============================================================================
|
|
//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;
|
|
//using System.Text;
|
|
//using System.Management.Automation;
|
|
//using OpenStack.Objects.DataAccess;
|
|
//using System.IO;
|
|
//using OpenStack.Common.Properties;
|
|
//using System.Xml;
|
|
//using System.Xml.Serialization;
|
|
//using OpenStack.Client.Powershell.Providers.Storage;
|
|
//using OpenStack.Objects.Domain;
|
|
//using OpenStack.Objects.Utility;
|
|
//using OpenStack.Client.Powershell.Providers.Common;
|
|
//using System.Linq;
|
|
//using System.Collections.ObjectModel;
|
|
//using System.Management.Automation.Host;
|
|
|
|
//namespace OpenStack.Client.Powershell.Cmdlets.Common
|
|
//{
|
|
// public class BasePSCmdlet : PSCmdlet
|
|
// {
|
|
// private OpenStack.Objects.DataAccess.ResponseFormat _responseFormat = ResponseFormat.none;
|
|
// private BaseRepositoryFactory _repositoryFactory;
|
|
|
|
// #region Properties
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
////=========================================================================================
|
|
// protected BaseUIContainer CurrentContainer
|
|
// {
|
|
// get
|
|
// {
|
|
// CommonDriveInfo tempDrive = this.Drive as CommonDriveInfo;
|
|
// if (tempDrive != null)
|
|
// {
|
|
// return tempDrive.CurrentContainer as BaseUIContainer;
|
|
// }
|
|
// else return null;
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
///// Exposes the currently mapped Drive. Belongs in base class???
|
|
///// </summary>
|
|
////=========================================================================================
|
|
// protected PSDriveInfo Drive
|
|
// {
|
|
// get
|
|
// {
|
|
// return this.SessionState.Drive.Current;
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
///// <param name="message"></param>
|
|
////=========================================================================================
|
|
// protected void WriteHeaderSection(string headerText)
|
|
// {
|
|
// WriteObject(" ");
|
|
// Console.ForegroundColor = ConsoleColor.DarkGray;
|
|
// WriteObject("==============================================================================================");
|
|
// Console.ForegroundColor = ConsoleColor.Yellow;
|
|
// WriteObject(headerText);
|
|
// Console.ForegroundColor = ConsoleColor.DarkGray;
|
|
// WriteObject("==============================================================================================");
|
|
// Console.ForegroundColor = ConsoleColor.Green;
|
|
// }
|
|
////==================================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
////==================================================================================================
|
|
// protected Context Context
|
|
// {
|
|
// get
|
|
// {
|
|
// return (Context)this.SessionState.PSVariable.GetValue("Context", null);
|
|
// }
|
|
// set
|
|
// {
|
|
// this.SessionState.PSVariable.Set(new PSVariable("Context", value));
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
////=========================================================================================
|
|
// protected BaseRepositoryFactory RepositoryFactory
|
|
// {
|
|
// get
|
|
// {
|
|
// if (_repositoryFactory == null)
|
|
// {
|
|
// try
|
|
// {
|
|
// _repositoryFactory = (BaseRepositoryFactory)this.SessionState.PSVariable.Get("BaseRepositoryFactory").Value;
|
|
// }
|
|
// catch (NullReferenceException ex)
|
|
// {
|
|
// throw new PSSecurityException("The Authentication process has failed for this session. Please ensure that proper credentials have been supplied before using any of these cmdlets.");
|
|
// }
|
|
// return _repositoryFactory;
|
|
// }
|
|
// else
|
|
// {
|
|
// return _repositoryFactory;
|
|
// }
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
///// <returns></returns>
|
|
////=========================================================================================
|
|
// protected string ConfigFilePath
|
|
// {
|
|
// get
|
|
// {
|
|
// try
|
|
// {
|
|
// return (string)this.SessionState.PSVariable.Get("ConfigPath").Value;
|
|
// }
|
|
// catch (Exception)
|
|
// {
|
|
// return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\" + @"OS\OpenStack.config";
|
|
// }
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
///// <returns></returns>
|
|
////=========================================================================================
|
|
// protected Settings Settings
|
|
// {
|
|
// set
|
|
// {
|
|
// this.Context.Settings = value;
|
|
// }
|
|
// get
|
|
// {
|
|
// return this.Context.Settings;
|
|
// }
|
|
// }
|
|
// #endregion
|
|
// #region Methods
|
|
////==================================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
///// <param name="path"></param>
|
|
///// <returns></returns>
|
|
////==================================================================================================
|
|
// protected string TranslateQuickPickNumber(string path)
|
|
// {
|
|
// CommonDriveInfo drive = this.Drive as CommonDriveInfo;
|
|
// if (drive != null)
|
|
// {
|
|
// BaseUIContainer result = null;
|
|
// int number = 0;
|
|
|
|
// if (Int32.TryParse(Path.GetFileName(path), out number))
|
|
// {
|
|
// if (path == "\\" + this.Drive.CurrentLocation)
|
|
// {
|
|
// return path.Replace(Path.GetFileName(path), drive.CurrentContainer.Entity.Id);
|
|
// }
|
|
// //else if (path.Length < this.Drive.CurrentLocation.Length)
|
|
// //{
|
|
// // result = drive.CurrentContainer.Parent;
|
|
// //}
|
|
// else
|
|
// {
|
|
// result = drive.CurrentContainer.Containers.Where(q => q.Entity.QuickPickNumber == number).FirstOrDefault<BaseUIContainer>();
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// return path;
|
|
// }
|
|
|
|
// if (result != null)
|
|
// return path.Replace(Path.GetFileName(path), result.Id);
|
|
// else return null;
|
|
// }
|
|
// else return null;
|
|
// }
|
|
////==================================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
////==================================================================================================
|
|
// protected override void BeginProcessing()
|
|
// {
|
|
// if (this.Drive.Name != "OpenStack" && this.Drive.Provider.Name != "OS-Storage")
|
|
// {
|
|
// ErrorRecord err = new ErrorRecord(new InvalidOperationException("You must be attached to an ObjectStorage Container or the OpenStack drive to execute an OpenStack Cloud cmdlet."), "0" , ErrorCategory.InvalidOperation, this);
|
|
// this.ThrowTerminatingError(err);
|
|
// }
|
|
|
|
// bool isAuthorized = false;
|
|
// Type type = this.GetType();
|
|
// object[] metadata = type.GetCustomAttributes(false);
|
|
// bool foundattribute = false;
|
|
|
|
// foreach (object attribute in metadata)
|
|
// {
|
|
// RequiredServiceIdentifierAttribute identifier = attribute as RequiredServiceIdentifierAttribute;
|
|
|
|
// if (identifier != null)
|
|
// {
|
|
// if (this.Context.ServiceCatalog.GetService(identifier.Services) != null)
|
|
// isAuthorized = true;
|
|
// }
|
|
// }
|
|
|
|
// if (isAuthorized == false && foundattribute == false) return;
|
|
|
|
// if (!isAuthorized)
|
|
// this.ThrowTerminatingError(new ErrorRecord(new InvalidOperationException("You're not current authorized to use this service. Please go to https://www.OpenStack.com/ for more information on signing up for this service."), "aa", ErrorCategory.InvalidOperation, this));
|
|
// }
|
|
////==================================================================================================
|
|
///// <summary>
|
|
///// Writes out the files represented as StorageObjects for the supplied path.
|
|
///// </summary>
|
|
////==================================================================================================
|
|
// protected void WriteXML<T>(T graph, string path)
|
|
// {
|
|
// XmlTextWriter xtw = null;
|
|
// MemoryStream stream = new MemoryStream();
|
|
// StringBuilder builder = new StringBuilder();
|
|
// XmlDocument document = new XmlDocument();
|
|
// StringWriter writer = null;
|
|
// XmlSerializer serializer = new XmlSerializer(typeof(T));
|
|
|
|
// try
|
|
// {
|
|
// serializer.Serialize(stream, graph);
|
|
// stream.Position = 0;
|
|
// document.Load(stream);
|
|
|
|
// writer = new StringWriter(builder);
|
|
// xtw = new XmlTextWriter(writer);
|
|
// xtw.Formatting = Formatting.Indented;
|
|
|
|
// document.WriteTo(xtw);
|
|
// }
|
|
// finally
|
|
// {
|
|
// xtw.Close();
|
|
// }
|
|
// WriteObject(builder.ToString());
|
|
// WriteObject("");
|
|
// }
|
|
// #endregion
|
|
// #region Methods
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
///// <param name="entity"></param>
|
|
///// <returns></returns>
|
|
////=========================================================================================
|
|
// protected bool UserConfirmsDeleteAction(string entity)
|
|
// {
|
|
// Collection<ChoiceDescription> choices = new Collection<ChoiceDescription>();
|
|
// choices.Add(new ChoiceDescription("Y", "Yes"));
|
|
// choices.Add(new ChoiceDescription("N", "No"));
|
|
|
|
// if (this.Host.UI.PromptForChoice("Confirm Action", "You are about to delete all " + entity + " in the current container. Are you sure about this?", choices, 0) == 0)
|
|
// {
|
|
// return true;
|
|
// }
|
|
// else
|
|
// {
|
|
// return false;
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
////=========================================================================================
|
|
// protected void UpdateCache(Context context)
|
|
// {
|
|
// CommonDriveInfo tempDrive = this.Drive as CommonDriveInfo;
|
|
// if (tempDrive != null)
|
|
// {
|
|
// BaseUIContainer container = tempDrive.CurrentContainer as BaseUIContainer;
|
|
// container.Context = context;
|
|
|
|
// if (container != null)
|
|
// {
|
|
// try
|
|
// {
|
|
// container.Load();
|
|
// }
|
|
// catch (InvalidOperationException) { }
|
|
// if (container.Parent != null)
|
|
// container.Parent.Load();
|
|
// }
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
////=========================================================================================
|
|
// protected void UpdateCache()
|
|
// {
|
|
// CommonDriveInfo tempDrive = this.Drive as CommonDriveInfo;
|
|
// if (tempDrive != null)
|
|
// {
|
|
// BaseUIContainer container = tempDrive.CurrentContainer as BaseUIContainer;
|
|
|
|
// if (container != null)
|
|
// {
|
|
// try
|
|
// {
|
|
// container.Load();
|
|
// }
|
|
// catch (InvalidOperationException) { }
|
|
// if (container.Parent != null)
|
|
// container.Parent.Load();
|
|
// }
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
///// Updates the cache if the current UIContainer manages the supplied type.
|
|
///// </summary>
|
|
////=========================================================================================
|
|
// protected void UpdateCache<T>() where T : BaseUIContainer
|
|
// {
|
|
// T container = ((CommonDriveInfo)this.Drive).CurrentContainer as T;
|
|
|
|
// if (container != null)
|
|
// {
|
|
// container.Load();
|
|
// }
|
|
// else
|
|
// {
|
|
// T parentContainer = ((CommonDriveInfo)this.Drive).CurrentContainer.Parent as T;
|
|
// if (parentContainer != null)
|
|
// {
|
|
// parentContainer.Load();
|
|
// }
|
|
// }
|
|
// }
|
|
////=========================================================================================
|
|
///// <summary>
|
|
/////
|
|
///// </summary>
|
|
///// <param name="path"></param>
|
|
////=========================================================================================
|
|
// protected StoragePath CreateStoragePath(string path)
|
|
// {
|
|
// return ((OSDriveInfo)this.Drive).CreateStoragePath(path);
|
|
// }
|
|
// #endregion
|
|
// }
|
|
//}
|