Feedback from Code Review Process

Change-Id: I8a7ab3ff699a688ea3fae25a4e26a8128f797d89
This commit is contained in:
Travis Plummer 2014-06-23 14:40:21 -05:00
parent 53dc8b3bf9
commit 5804f93350
76 changed files with 6342 additions and 294 deletions

1
.gitignore vendored
View File

@ -106,6 +106,7 @@ publish/
# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
packages/
*.nupkg
# Windows Azure Build Output
csx

View File

@ -7,8 +7,8 @@
<ProjectGuid>{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>HP.Openstack.Client.Powershell</RootNamespace>
<AssemblyName>HP.Openstack.Client.Powershell</AssemblyName>
<RootNamespace>AcmeInc.Openstack.Client.Powershell</RootNamespace>
<AssemblyName>AcmeInc.Openstack.Client.Powershell</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
@ -18,7 +18,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\..\..\Documents\WindowsPowerShell\Modules\Openstack\HP\</OutputPath>
<OutputPath>..\..\..\..\Documents\WindowsPowerShell\Modules\AcmeInc\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -34,7 +34,7 @@
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="OpenStack, Version=0.9.1.0, Culture=neutral, PublicKeyToken=baf191d8aca7391c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@ -61,15 +61,17 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Cmdlets\HelloHPCmdlet.cs" />
<Compile Include="Cmdlets\HelloAcmeIncCmdlet.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utility\HPRegistrationManager.cs" />
<Compile Include="Utility\AcmeRegistrationManager.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Deployment\HP.psd1">
<None Include="Deployment\AcmeInc.nuspec" />
<None Include="Deployment\AcmeInc.psd1">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Deployment\tools\chocolateyInstall.ps1" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
@ -78,10 +80,16 @@
<Name>Openstack.Client.Powershell</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Deployment\ServiceProvider.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<PropertyGroup>
<PostBuildEvent>copy .\Deployment\HP.psd1 C:\Users\tplummer\Documents\WindowsPowerShell\Modules\Openstack\HP</PostBuildEvent>
<PostBuildEvent>md %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\AcmeInc
copy .\Deployment\AcmeInc.psd1 %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\AcmeInc</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">

View File

@ -16,12 +16,11 @@
using System;
using System.Management.Automation;
namespace HP.Client.Powershell.Cmdlets
namespace AcmeInc.Client.Powershell.Cmdlets
{
[Cmdlet("Hello", "HP", SupportsShouldProcess = true)]
[Cmdlet("Hello", "AcmeInc", SupportsShouldProcess = true)]
//[RequiredServiceIdentifierAttribute(OpenStack.Objects.Domain.Admin.Services.ObjectStorage)]
public class HelloHPCmdlet : PSCmdlet
public class HelloAcmeIncCmdlet : PSCmdlet
{
//=========================================================================================
@ -31,7 +30,7 @@ namespace HP.Client.Powershell.Cmdlets
//=========================================================================================
protected override void ProcessRecord()
{
Console.WriteLine("Hello World, from HP");
Console.WriteLine("Hello World, from AcmeInc");
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Do not remove this test for UTF-8: if “Ω” doesnt appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
<package>
<metadata>
<id>acme-cli-powershell</id>
<title>acme-cli-powershell</title>
<version>2.0.0</version>
<authors>L.Jenkins</authors>
<owners>Example Inc</owners>
<summary>Thid package allows Users to manage their Openstack environments from the Powershell command line.</summary>
<description>Thid package allows Users to manage their Openstack environments from the Powershell command line.</description>
<tags>Acme OpenStack Powershell CLI Windows</tags>
<copyright>2014</copyright>
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!--<iconUrl>https://raw.github.com/__CHOCO_PKG_OWNER_REPO__/master/__NAME__/__NAME__.png</iconUrl>-->
<releaseNotes>This first release demonstrates the Mutli-Vendor functionality as well as a Read-onoly version of the ObjectStorage Provider.</releaseNotes>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>

View File

@ -1,9 +1,9 @@
@{
ModuleToProcess = 'Rackspace.OpenStack.Client.Powershell.dll'
ModuleToProcess = 'AcmeInc.OpenStack.Client.Powershell.dll'
GUID="{847a28a4-6407-4aa6-8070-a4a51396db70}"
Author="Sam"
CompanyName="Rackspace Corporation"
Copyright="© Rackspace. All rights reserved."
Author="Lateralus"
CompanyName="Acme Corporation"
Copyright="DoJuJitsu"
ModuleVersion="1.0.0.0"
PowerShellVersion="2.0"
CLRVersion="4.0.30319"

View File

@ -0,0 +1,16 @@
<ServiceProvider name="AcmeInc" isDefault="false">
<add key="AuthenticationServiceURI" value="https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/" displayName="Authentication Service URI" helpText ="" isMandatory="True"/>
<add key="Username" value="" displayName="User name" helpText ="" isMandatory="True"/>
<add key="Password" value="" displayName="Password" helpText ="" isMandatory="True" />
<add key="DefaultTenantId" value="" displayName="Default Tenant Id" helpText ="" isMandatory="True"/>
<AvailabilityZones>
<AvailabilityZone id="1" isDefault="True" name="Acmeregion-a.geo-1" shellForegroundColor="Green" />
<AvailabilityZone id="2" isDefault="False" name="Acmeregion-b.geo-1" shellForegroundColor="Green" />
</AvailabilityZones>
<ServiceMaps>
<ServiceMap source="ObjectStorage" target="Object Storage"/>
<ServiceMap source="ImageManagement" target="Image Management"/>
<ServiceMap source="BlockStorage" target="Block Storage"/>
<ServiceMap source="Compute" target="Compute"/>
</ServiceMaps>
</ServiceProvider>

View File

@ -0,0 +1,38 @@

# Install the Extensions Package...
$packageName = 'acme-cli-powershell'
$installerType = 'msi'
$url = $env:USERPROFILE + '\Source\Builds\AcmeInc.Openstack.Deployment.msi'
$silentArgs = '/quiet'
$validExitCodes = @(0)
Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url" -validExitCodes $validExitCodes
try
{
# Add the extensions location to PSModulePath for easy loading later on..
$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$p += ";" + $env:USERPROFILE + "\Documents\WindowsPowerShell\Modules\AcmeInc"
[Environment]::SetEnvironmentVariable("PSModulePath", $p)
# Import our Openstack.Client.Powershell assembly. This has the ConfigurationMAnager type which lets you
# register your Service Provider information.
$configManagerAsmPath = $env:USERPROFILE + "\Documents\WindowsPowerShell\Modules\Openstack-core\Openstack.Client.Powershell.dll"
add-type -Path ($configManagerAsmPath)
# Register the Service Provider. This requires the Extension Author to have a ServiceProvider.xml definition file in the
# Deployment Folder.
$serviceProviderPath = $env:USERPROFILE + "\Documents\WindowsPowerShell\Modules\AcmeInc\Deployment\ServiceProvider.xml"
$manager = New-Object -TypeName OpenStack.Client.Powershell.Utility.ConfigurationManager
$manager.WriteServiceProvider($serviceProviderPath)
Write-ChocolateySuccess "$packageName"
}
catch
{
Write-ChocolateyFailure "$packageName" "$($_.Exception.Message)"
throw
}

View File

@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("HP.OpenStack.Client.Powershell")]
[assembly: AssemblyTitle("AcmeInc.OpenStack.Client.Powershell")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HP.OpenStack.Client.Powershell")]
[assembly: AssemblyProduct("AcmeInc.OpenStack.Client.Powershell")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

View File

@ -1,17 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
using OpenStack.Identity;
namespace HP.OpenStack.Client.Powershell.Utility
namespace AcmeInc.OpenStack.Client.Powershell.Utility
{
[ServiceProviderAttribute("HP")]
public class HPRegistrationManager : RegistrationManager
[ServiceProviderAttribute("AcmeInc")]
public class AcmeRegistrationManager : RegistrationManager
{
public override RegistrationResponse Register(ServiceProvider serviceProvider)
{
@ -25,13 +20,5 @@ namespace HP.OpenStack.Client.Powershell.Utility
IOpenStackCredential credential = new OpenStackCredential(new Uri (authenticationEndpoint), userName, password, tenantId);
return new RegistrationResponse(credential, serviceProvider);
}
private SecureString GetSecureString(string password)
{
SecureString securePassword = new SecureString();
password.ToCharArray().ToList().ForEach(securePassword.AppendChar);
return SecureStringHelper.ConvertToSecureString(password);
}
}
}

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -3,7 +3,7 @@
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
<package id="OpenStack-SDK-DotNet" version="0.9.1.0" targetFramework="net45" />
<package id="System.Management.Automation" version="6.1.7601.17515" targetFramework="net45" />
</packages>

View File

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "AcmeInc.Openstack.Deployment", "AcmeInc.Openstack.Deployment\AcmeInc.Openstack.Deployment.vdproj", "{D2DB9636-72E1-47E2-98E8-E23AFD996109}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Default = Debug|Default
Release|Default = Release|Default
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D2DB9636-72E1-47E2-98E8-E23AFD996109}.Debug|Default.ActiveCfg = Debug
{D2DB9636-72E1-47E2-98E8-E23AFD996109}.Debug|Default.Build.0 = Debug
{D2DB9636-72E1-47E2-98E8-E23AFD996109}.Release|Default.ActiveCfg = Release
{D2DB9636-72E1-47E2-98E8-E23AFD996109}.Release|Default.Build.0 = Release
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -1,81 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Openstack.Client.Powershell", "Openstack.Client.Powershell\Openstack.Client.Powershell.csproj", "{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D4A8C690-E5E7-428B-A57C-884680BC3AF5}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
.nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HP.Openstack.Client.Powershell", "HP.Openstack.Client.Powershell\HP.Openstack.Client.Powershell.csproj", "{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rackspace.Openstack.Client.Powershell", "Rackspace.Client.Powershell\Rackspace.Openstack.Client.Powershell.csproj", "{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|x86 = Release|x86
TransformTool Build|Any CPU = TransformTool Build|Any CPU
TransformTool Build|Mixed Platforms = TransformTool Build|Mixed Platforms
TransformTool Build|x86 = TransformTool Build|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Debug|x86.ActiveCfg = Debug|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Release|Any CPU.Build.0 = Release|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Release|x86.ActiveCfg = Release|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.TransformTool Build|Any CPU.ActiveCfg = TransformTool Build|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.TransformTool Build|Any CPU.Build.0 = TransformTool Build|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.TransformTool Build|Mixed Platforms.ActiveCfg = TransformTool Build|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.TransformTool Build|Mixed Platforms.Build.0 = TransformTool Build|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.TransformTool Build|x86.ActiveCfg = TransformTool Build|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Debug|x86.ActiveCfg = Debug|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Release|Any CPU.Build.0 = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Release|x86.ActiveCfg = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.TransformTool Build|Any CPU.ActiveCfg = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.TransformTool Build|Any CPU.Build.0 = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.TransformTool Build|Mixed Platforms.ActiveCfg = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.TransformTool Build|Mixed Platforms.Build.0 = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.TransformTool Build|x86.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|x86.ActiveCfg = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Any CPU.Build.0 = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|x86.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.TransformTool Build|Any CPU.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.TransformTool Build|Any CPU.Build.0 = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.TransformTool Build|Mixed Platforms.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.TransformTool Build|Mixed Platforms.Build.0 = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.TransformTool Build|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Openstack.Client.Powershell.Deployment", "Openstack.Client.Powershell.Deployment\Openstack.Client.Powershell.Deployment.vdproj", "{ED796A88-B8B7-49FC-9B16-2FD43492DADB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Default = Debug|Default
Release|Default = Release|Default
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{ED796A88-B8B7-49FC-9B16-2FD43492DADB}.Debug|Default.ActiveCfg = Debug
{ED796A88-B8B7-49FC-9B16-2FD43492DADB}.Debug|Default.Build.0 = Debug
{ED796A88-B8B7-49FC-9B16-2FD43492DADB}.Release|Default.ActiveCfg = Release
{ED796A88-B8B7-49FC-9B16-2FD43492DADB}.Release|Default.Build.0 = Release
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

Binary file not shown.

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup>
<PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
<PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
</PropertyGroup>
<PropertyGroup>
<PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
<PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
</Target>
<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
</Project>

View File

@ -27,7 +27,7 @@ using System.Linq;
using System.Collections.ObjectModel;
using System.Management.Automation.Host;
using System.Threading;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Cmdlets.Common
{

View File

@ -107,7 +107,7 @@ namespace OpenStack.Client.Powershell.Cmdlets.Common
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Name : " + service.Name);
Console.WriteLine("Type : " + service.Type);
// Console.WriteLine("Provider Name : " + service.ProviderName);
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("");
Console.WriteLine("Associated Endpoints");

View File

@ -18,7 +18,8 @@ using System.Management.Automation;
using System.Xml.Linq;
using System.Xml.XPath;
using System.Linq;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Cmdlets.Common
{
@ -31,7 +32,7 @@ namespace OpenStack.Client.Powershell.Cmdlets.Common
/// </summary>
//=========================================================================================
protected override void ProcessRecord()
{
{
AvailabilityZone zone = this.Context.CurrentServiceProvider.AvailabilityZones.Where(z => z.IsDefault == true).Single();
if (zone != null) {

View File

@ -21,7 +21,7 @@ using OpenStack.Client.Powershell.Cmdlets.Common;
using System.Management.Automation;
using System.Xml.Linq;
using System.Xml.XPath;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Cmdlets.Common
{

View File

@ -20,7 +20,7 @@ using System.Xml.XPath;
using OpenStack.Client.Powershell.Cmdlets.Common;
using OpenStack.Client.Powershell.Utility;
namespace Openstack.Client.Powershell.Cmdlets.Common
namespace OpenStack.Client.Powershell.Cmdlets.Common
{
[Cmdlet("Set", "Zone", SupportsShouldProcess = true)]
public class SetZoneCmdlet : BasePSCmdlet

View File

@ -4,10 +4,10 @@ ACTION REQUIRED : Change the DocPath Variable below to reflect your Personal Doc
=====================================================================================================================
set DocPath=C:\Users\Travis\Documents
md %DocPath%\WindowsPowershell\
md %DocPath%\OS\
md %DocPath%\OS\
md %DocPath%\WindowsPowershell\
md %DocPath%\OS\
md %DocPath%\OS\
copy ..\..\.\Deployment\DevProfile.ps1 %DocPath%\WindowsPowershell\Microsoft.PowerShell_profile.ps1
copy ..\..\.\Deployment\OpenStack.config %DocPath%\OS\OpenStack.config
copy ..\..\.\Deployment\OpenStack.config %DocPath%\OS\OpenStack.config
copy ..\..\.\Deployment\OpenStack.Client.Powershell.dll-Help.xml %DocPath%\OS\OpenStack.Client.Powershell.dll-Help.xml

View File

@ -1,6 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<Testing>
<add key= "TestFilePath" value="c:\Projects\Testing\Anothertest.txt"/>
<add key= "TeststorageContainer" value="testcon"/>
<add key= "TeststorageContainerSecondary" value="b10"/>
<add key= "LocalTestDirectory" value="e:\Projects\Testing\"/>
<add key= "TestServerId" value="8079afef-d6c3-44a9-9276-0ee8fe344b67"/>
<add key= "TestImageId" value="5a1408cb-25f2-43a6-b1d9-931f5e47c871"/>
<add key= "TestFlavorId" value="100"/>
</Testing>
<StorageManagement>
<add key="largeFileSize" value="314572800" />
<add key="defSegmentNumber" value="16" />
@ -20,11 +29,11 @@
<add key="SSHClientPath" value="C:\Users\tplummer\Desktop\Utilities\Putty.exe" />
</ComputeServices>
<IdentityServices>
<ServiceProvider name="" isDefault = "true">
<add key="AuthenticationServiceURI" value="" displayName="Authentication Service URI" helpText ="" isMandatory="True"/>
<add key="Username" value="" displayName="User name" helpText ="" isMandatory="True"/>
<add key="Password" value="" displayName="Password" helpText ="" isMandatory="True" />
<add key="DefaultTenantId" value="" displayName="Default Tenant Id" helpText ="" isMandatory="True"/>
<ServiceProvider name="HP" isDefault = "true">
<add key="AuthenticationServiceURI" value="https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/" displayName="Authentication Service URI" helpText ="" isMandatory="True"/>
<add key="Username" value="Travis.Plummer@hp.com" displayName="User name" helpText ="" isMandatory="True"/>
<add key="Password" value="Armbar40" displayName="Password" helpText ="" isMandatory="True" />
<add key="DefaultTenantId" value="Travis.Plummer@hp.com" displayName="Default Tenant Id" helpText ="" isMandatory="True"/>
<AvailabilityZones>
<AvailabilityZone id="1" isDefault="True" name="region-a.geo-1" shellForegroundColor="Green" />
<AvailabilityZone id="2" isDefault="False" name="region-b.geo-1" shellForegroundColor="Green" />

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Do not remove this test for UTF-8: if “Ω” doesnt appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
<package>
<metadata>
<id>openstack-cli-powershell</id>
<title>openstack-cli-powershell</title>
<version>2.0.0</version>
<authors>ThatGuy</authors>
<owners>Travis Plummer</owners>
<summary>Thid package allows Users to manage their Openstack environments from the Powershell command line.</summary>
<description>Thid package allows Users to manage their Openstack environments from the Powershell command line.</description>
<tags>OpenStack Powershell CLI Windows</tags>
<copyright>2014</copyright>
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!--<iconUrl>https://raw.github.com/__CHOCO_PKG_OWNER_REPO__/master/__NAME__/__NAME__.png</iconUrl>-->
<!--<dependencies>
<dependency id="" version="" />
</dependencies>-->
<releaseNotes>This first release demonstrates the Mutli-Vendor functionality as well as a Read-onoly version of the ObjectStorage Provider.</releaseNotes>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>

View File

@ -0,0 +1,46 @@

$packageName = 'openstack-cli-powershell'
$installerType = 'msi'
#$url = 'https://onedrive.live.com/redir?resid=4BB76CA4826F85D5%2119977'
$url = 'C:\Users\plummert\Source\Builds\Openstack.Client.Powershell.Deployment.msi'
$silentArgs = '/quiet'
$validExitCodes = @(0)
Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url" -validExitCodes $validExitCodes
$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$p += ";" + $env:USERPROFILE + "\Documents\WindowsPowerShell\Modules\Openstack-Core"
[Environment]::SetEnvironmentVariable("PSModulePath",$p)
#try { #error handling is only necessary if you need to do anything in addition to/instead of the main helpers
# other helpers - using any of these means you want to uncomment the error handling up top and at bottom.
# downloader that the main helpers use to download items
# if removing $url64, please remove from here
#Get-ChocolateyWebFile "$packageName" 'DOWNLOAD_TO_FILE_FULL_PATH' "$url"
# installer, will assert administrative rights - used by Install-ChocolateyPackage
#Install-ChocolateyInstallPackage "$packageName" "$installerType" "$silentArgs" '_FULLFILEPATH_' -validExitCodes $validExitCodes
# unzips a file to the specified location - auto overwrites existing content
#Get-ChocolateyUnzip "FULL_LOCATION_TO_ZIP.zip" "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
# Runs processes asserting UAC, will assert administrative rights - used by Install-ChocolateyInstallPackage
#Start-ChocolateyProcessAsAdmin 'STATEMENTS_TO_RUN' 'Optional_Application_If_Not_PowerShell' -validExitCodes $validExitCodes
# add specific folders to the path - any executables found in the chocolatey package folder will already be on the path. This is used in addition to that or for cases when a native installer doesn't add things to the path.
#Install-ChocolateyPath 'LOCATION_TO_ADD_TO_PATH' 'User_OR_Machine' # Machine will assert administrative rights
# add specific files as shortcuts to the desktop
#$target = Join-Path $MyInvocation.MyCommand.Definition "$($packageName).exe"
#Install-ChocolateyDesktopLink $target
#------- ADDITIONAL SETUP -------#
# make sure to uncomment the error handling if you have additional setup to do
#$processor = Get-WmiObject Win32_Processor
#$is64bit = $processor.AddressWidth -eq 64
# the following is all part of error handling
#Write-ChocolateySuccess "$packageName"
#} catch {
#Write-ChocolateyFailure "$packageName" "$($_.Exception.Message)"
#throw
#}

View File

@ -8,7 +8,7 @@
<ProjectGuid>{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Openstack.Client.Powershell</RootNamespace>
<RootNamespace>OpenStack.Client.Powershell</RootNamespace>
<AssemblyName>Openstack.Client.Powershell</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
@ -21,7 +21,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\..\..\Documents\WindowsPowerShell\Modules\Openstack\Openstack-Core\</OutputPath>
<OutputPath>..\..\..\..\Documents\WindowsPowerShell\Modules\Openstack-Core\</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -58,13 +58,13 @@
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
<Reference Include="AWSSDK, Version=2.0.11.0, Culture=neutral, PublicKeyToken=9f476d3089b52be3, processorArchitecture=MSIL">
<Reference Include="AWSSDK, Version=2.1.3.0, Culture=neutral, PublicKeyToken=9f476d3089b52be3, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\AWSSDK.2.0.11.0\lib\net45\AWSSDK.dll</HintPath>
<HintPath>..\packages\AWSSDK.2.1.3.0\lib\net45\AWSSDK.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="OpenStack, Version=0.9.1.0, Culture=neutral, PublicKeyToken=baf191d8aca7391c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@ -111,7 +111,6 @@
<Compile Include="Cmdlets\Common\GetZonesCmdlet.cs" />
<Compile Include="Cmdlets\Common\SetConfigCmdlet.cs" />
<Compile Include="Cmdlets\Common\SetZoneCmdlet.cs" />
<Compile Include="Cmdlets\Common\TokenTestCmdlet.cs" />
<Compile Include="Providers\Common\BaseNavigationCmdletProvider.cs" />
<Compile Include="Providers\Common\CommonDriveInfo.cs" />
<Compile Include="Providers\Common\CommonDriveParameters.cs" />
@ -134,7 +133,6 @@
<Compile Include="Utility\Enums.cs" />
<Compile Include="Utility\ExtensionManager.cs" />
<Compile Include="Providers\ObjectStorage\ObjectStorageDriveConverter.cs" />
<Compile Include="Utility\ExtensionMethods.cs" />
<Compile Include="Utility\OpenstackCoreRegistrationManager.cs" />
<Compile Include="Utility\RegistrationManager.cs" />
<Compile Include="Utility\RegistrationResponse.cs" />
@ -150,18 +148,17 @@
<None Include="app.config">
<SubType>Designer</SubType>
</None>
<None Include="Deployment\NavigationGraph.dgml" />
<None Include="Deployment\Openstack.config">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Deployment\DevProfile.ps1" />
<None Include="Deployment\PostBuild.bat" />
<None Include="Deployment\Openstack.config.example">
<None Include="Deployment\Examples\PostBuild.bat" />
<None Include="Deployment\Examples\Openstack.config.example">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Deployment\DevProfile.ps1.example" />
<None Include="Deployment\Examples\DevProfile.ps1.example" />
<None Include="Deployment\Openstack.format.ps1xml">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
@ -169,7 +166,9 @@
<None Include="Deployment\Microsoft.PowerShell_profile.ps1">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Deployment\PostBuild.example" />
<None Include="Deployment\Examples\PostBuild.example" />
<None Include="Deployment\tools\chocolateyInstall.ps1" />
<None Include="Deployment\openstack-cli-powershell.nuspec" />
<None Include="packages.config" />
<Resource Include="Deployment\powershell.exe.config">
<SubType>Designer</SubType>
@ -193,32 +192,23 @@
<Folder Include="Providers\Security\" />
</ItemGroup>
<ItemGroup>
<Content Include="Deployment\Aliases.txt">
<Content Include="Deployment\Examples\Aliases.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Deployment\ApacheLicense.txt" />
<Content Include="Deployment\CredentialList.xml">
<Content Include="Deployment\Examples\ApacheLicense.txt" />
<Content Include="Deployment\Examples\CredentialList.xml">
<SubType>Designer</SubType>
</Content>
<Content Include="Deployment\NavigationGraph.txt" />
<Content Include="Deployment\Openstack.Client.Powershell.dll-Help.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Deployment\readme.txt" />
<Content Include="Deployment\ReleaseManifest.xml" />
<Content Include="Deployment\ScratchPad\SecurityGroupData\SecurityGroupTest.xml" />
<Content Include="Deployment\ScratchPad\SecurityGroupData\SecurityGroupsTest.xml" />
<Content Include="Deployment\ScratchPad\SecurityGroupData\SecurityGroups.xml" />
<Content Include="Deployment\ScratchPad\ServerData\Server.xml">
<SubType>Designer</SubType>
</Content>
<Content Include="Deployment\ScratchPad\ServerData\Server1.xml" />
<Content Include="Deployment\ScratchPad\ServerData\Servers.xml" />
<Content Include="Deployment\Examples\readme.txt" />
<Content Include="Deployment\Examples\ReleaseManifest.xml" />
<Content Include="License.txt" />
<None Include="Deployment\Openstack-Core.psd1">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Deployment\ReleaseNotes.xml">
<None Include="Deployment\Examples\ReleaseNotes.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
@ -240,12 +230,11 @@ Echo =====================
md %25USERPROFILE%25\Documents\WindowsPowerShell
md %25USERPROFILE%25\Documents\WindowsPowerShell\Modules
md %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\Openstack
md %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\Openstack\Openstack-Core
md %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\Openstack-Core
md %25USERPROFILE%25\Documents\OS
md $(ProjectDir)bin\debug
copy $(ProjectDir)\Deployment\*.* %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\Openstack\Openstack-Core
copy $(ProjectDir)\Deployment\*.* %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\Openstack-Core
copy $(ProjectDir)\Deployment\DevProfile.ps1 %25USERPROFILE%25\Documents\WindowsPowerShell\Microsoft.Powershell_profile.ps1
copy $(ProjectDir)\Deployment\Openstack.config %25USERPROFILE%25\Documents\OS\Openstack.config
@ -259,8 +248,7 @@ echo copy C:\Users\tplummer\Source\Repos\FixIt\openstack-cli-powershell\Openstac
Echo The statement below is causing symbol mismatches when attaching the debugger remotely. For now, you should point this projects output folder
Echo to the correct runtime location. That is C:\Users\username\Documents\WindowsPowerShell\Modules\Openstack\Openstack-Core
Echo ' copy $(ProjectDir)bin\debug\*.* %25USERPROFILE%25\Documents\WindowsPowershell\Modules\Openstack\openstack-core
Echo ' copy $(ProjectDir)bin\debug\*.* %25USERPROFILE%25\Documents\WindowsPowershell\Modules\openstack-core

View File

@ -1,12 +1,9 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D129B468-4E23-4226-AA0E-AE02BB697D9A}"
ProjectSection(SolutionItems) = preProject
HPCloud.Client.Powershell.vsmdi = HPCloud.Client.Powershell.vsmdi
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Openstack.Client.Powershell", "Openstack.Client.Powershell.csproj", "{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}"
EndProject
@ -20,6 +17,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Openstack.Common", "..\..\A
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Openstack.Objects.Test", "..\..\API\Openstack.Objects.Test\Openstack.Objects.Test.csproj", "{E90D4392-6748-4405-9F99-2D5FBB09DFC8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{58823660-23CD-44FD-A588-2592A2932EC3}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
.nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU

View File

@ -21,7 +21,7 @@ using System.Xml.Linq;
using System.Xml.XPath;
using OpenStack.Client.Powershell.Utility;
using System.Linq;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Providers.Common
{
@ -112,13 +112,16 @@ namespace OpenStack.Client.Powershell.Providers.Common
private void SetZoneColor(ServiceProvider provider)
{
// We don't throw a critical exception if this operation fails..
try
{
AvailabilityZone defZone = provider.AvailabilityZones.Where(z => z.IsDefault == true).DefaultIfEmpty(null).FirstOrDefault();
if (defZone == null) return;
AvailabilityZone defZone = provider.AvailabilityZones.Where(z => z.IsDefault == true).DefaultIfEmpty(null).FirstOrDefault();
if (defZone == null) return;
Console.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), defZone.ShellForegroundColor);
this.Host.UI.RawUI.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), defZone.ShellForegroundColor);
this.Context.Forecolor = defZone.ShellForegroundColor;
Console.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), defZone.ShellForegroundColor);
this.Host.UI.RawUI.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), defZone.ShellForegroundColor);
this.Context.Forecolor = defZone.ShellForegroundColor;
}
catch (System.Management.Automation.Host.HostException) { }
}
//==================================================================================================
/// <summary>

View File

@ -16,9 +16,9 @@ limitations under the License.
using System.Collections;
using System.Collections.Generic;
using System.Management.Automation;
using Openstack.Client.Powershell.Providers.Common;
using OpenStack.Client.Powershell.Providers.Common;
namespace Openstack.Client.Powershell.Providers.Common
namespace OpenStack.Client.Powershell.Providers.Common
{
public class CommonDriveInfo : PSDriveInfo
{

View File

@ -18,7 +18,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Openstack.Client.Powershell.Providers.Common
namespace OpenStack.Client.Powershell.Providers.Common
{
public class CommonDriveParameters
{

View File

@ -5,7 +5,7 @@ using System.Linq;
using System.Management.Automation;
using System.Text;
using System.Threading.Tasks;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
using OpenStack;
using OpenStack.Client.Powershell.Providers.Storage;
using OpenStack.Client.Powershell.Utility;

View File

@ -28,7 +28,7 @@ using System.Threading.Tasks;
using System.Threading;
using OpenStack.Client.Powershell.Providers.ObjectStorage;
using System.Diagnostics.Contracts;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Providers.Storage
{
@ -177,7 +177,7 @@ namespace OpenStack.Client.Powershell.Providers.Storage
//==================================================================================================
protected override System.Collections.ObjectModel.Collection<PSDriveInfo> InitializeDefaultDrives()
{
Thread.Sleep(new TimeSpan(0, 0, 0, 5, 0));
//Thread.Sleep(new TimeSpan(0, 0, 0, 5, 0));
this.InitializeSession();
@ -522,7 +522,7 @@ namespace OpenStack.Client.Powershell.Providers.Storage
storagePath = new StoragePath(this.StorageServiceURL, this.Drive.Name, path.Substring(1) + "/");
}
IStorageServiceClient storageService = this.CoreClient.CreateServiceClient<IStorageServiceClient>();
IStorageServiceClient storageService = this.CreateServiceClient<IStorageServiceClient>(CoreServices.ObjectStorage);
Task<StorageObject> getStorageObjectTask = storageService.GetStorageObject(storagePath.Volume, storagePath.ResourcePath); //(storagePath.AbsoluteURI);
getStorageObjectTask.Wait();
StorageObject sObject = getStorageObjectTask.Result;

View File

@ -21,7 +21,7 @@ using System;
using System.IO;
using System.Linq;
using OpenStack.Storage;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Providers.Storage

View File

@ -19,7 +19,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Openstack.Client.Powershell.Utility
namespace OpenStack.Client.Powershell.Utility
{
public class AvailabilityZone
{

View File

@ -20,7 +20,7 @@ using System.Xml.Linq;
using System.Collections;
using System.IO;
using System.Xml.XPath;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
using System.Xml.Schema;
using System.Xml;
@ -148,6 +148,7 @@ namespace OpenStack.Client.Powershell.Utility
{
ValidationResult result = new ValidationResult();
#region XSD Approach
// First we check the structural integrity of the document via XSD..
//string xsdMarkup = this.GetSchema();
@ -159,7 +160,8 @@ namespace OpenStack.Client.Powershell.Utility
// result.Errors.Add(e.Message);
// result.HasErrors = true;
//});
#endregion
// Next, ensure that a default Service Provider exist..
var serviceProviders = this.Document.Descendants("ServiceProvider");
@ -201,8 +203,7 @@ namespace OpenStack.Client.Powershell.Utility
result.Errors.Add("Please ensure that all Service Providers have a unique name assigned to them.");
return result;
}
}
}
return result;
}
//=========================================================================================
@ -446,6 +447,27 @@ namespace OpenStack.Client.Powershell.Utility
}
//=========================================================================================
/// <summary>
/// Used by Extension Authors to register their Service Provider info. The path should point
/// to the ServiceProvider.xml definition file,.
/// </summary>
//=========================================================================================
public void WriteServiceProvider(string serviceProviderPath)
{
// Load up the Primary Config file..
this.Load(this.GetFullConfigPath());
XDocument serviceProvider = XDocument.Load(serviceProviderPath);
// Validate the ServiceProvider.xml definition file. If it passes, add it to the config file.
if (this.ValidateDocument(serviceProvider).Errors.Count() == 0) {
XElement identityServices = this.Document.Descendants("IdentityServices").FirstOrDefault();
identityServices.Add(serviceProvider.FirstNode);
this.Document.Save(this.GetFullConfigPath());
}
}
//=========================================================================================
/// <summary>
/// Flush and fill style..
/// </summary>
//=========================================================================================

View File

@ -26,7 +26,6 @@ using System.Diagnostics.Contracts;
namespace OpenStack.Client.Powershell.Utility
{
public class ServiceProviderInfo
{
public string Name;

View File

@ -15,25 +15,44 @@ using System;
using System.Management.Automation;
using System.Reflection;
using System.Security.Policy;
using OpenStack.Client.Powershell.Utility;
using System.Linq;
using OpenStack.Identity;
using System.Threading;
using Openstack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Utility
{
public class LoadResult
{
public LoadResult(IOpenStackClient client, Context context)
{
CoreClient = client;
Context = context;
}
public IOpenStackClient CoreClient;
public Context Context;
}
public class ExtensionManager
{
private SessionState _session;
private Context _context;
#region Properties
//==================================================================================================
/// <summary>
///
/// </summary>
//==================================================================================================
public Context Context
{
get { return _context; }
set { _context = value; }
}
//==================================================================================================
/// <summary>
///
/// </summary>
//==================================================================================================
public SessionState Session
{
get { return _session; }
@ -46,6 +65,17 @@ namespace OpenStack.Client.Powershell.Utility
/// </summary>
/// <param name="session"></param>
/// <param name="context"></param>
//==================================================================================================
public ExtensionManager(Context context)
{
_context = context;
}
//==================================================================================================
/// <summary>
///
/// </summary>
/// <param name="session"></param>
/// <param name="context"></param>
//==================================================================================================
public ExtensionManager(SessionState session, Context context)
{
@ -79,7 +109,7 @@ namespace OpenStack.Client.Powershell.Utility
/// <param name="context"></param>
/// <param name="client"></param>
//==================================================================================================
private void SetSessionState(IOpenStackCredential credential, IOpenStackClient client, ServiceProvider provider)
private LoadResult SetSessionState(IOpenStackCredential credential, IOpenStackClient client, ServiceProvider provider)
{
// Setup the environment based on what came back from Auth..
@ -90,9 +120,13 @@ namespace OpenStack.Client.Powershell.Utility
context.Version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
context.CurrentServiceProvider = provider;
context.CurrentRegion = provider.AvailabilityZones.Where(z => z.IsDefault == true).Single().Name;
this.Session.PSVariable.Set(new PSVariable("Context", context));
this.Session.PSVariable.Set(new PSVariable("CoreClient", client));
if (this.Session != null)
{
this.Session.PSVariable.Set(new PSVariable("Context", context));
this.Session.PSVariable.Set(new PSVariable("CoreClient", client));
}
return new LoadResult(client, context);
}
//==================================================================================================
/// <summary>
@ -138,7 +172,7 @@ namespace OpenStack.Client.Powershell.Utility
/// </summary>
/// <returns></returns>
//==================================================================================================
public void LoadCore(ServiceProvider provider)
public LoadResult LoadCore(ServiceProvider provider)
{
OpenstackCoreRegistrationManager manager = new OpenstackCoreRegistrationManager();
RegistrationResponse response = manager.Register(provider);
@ -147,7 +181,8 @@ namespace OpenStack.Client.Powershell.Utility
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
this.Session.PSVariable.Set(new PSVariable("CancellationTokenSource", source));
if (this.Session != null)
this.Session.PSVariable.Set(new PSVariable("CancellationTokenSource", source));
// Connect to the Service Provider..
@ -155,10 +190,11 @@ namespace OpenStack.Client.Powershell.Utility
var connectTask = client.Connect();
connectTask.Wait();
this.SetSessionState(response.Credentials, client, provider);
LoadResult result = this.SetSessionState(response.Credentials, client, provider);
ConfigurationManager configManager = new ConfigurationManager();
configManager.WriteServiceProvider(response.Provider, true);
return result;
}
//==================================================================================================
/// <summary>

View File

@ -19,7 +19,7 @@ using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
using OpenStack.Identity;

View File

@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Openstack.Client.Powershell.Utility
namespace OpenStack.Client.Powershell.Utility
{
public enum CoreServices

View File

@ -18,7 +18,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
namespace OpenStack.Client.Powershell.Utility
{

View File

@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Openstack.Client.Powershell.Utility
namespace OpenStack.Client.Powershell.Utility
{
public class ServiceProviderAttribute : Attribute
{

View File

@ -1,18 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="OpenStack.Client.Powershell.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<OpenStack.Client.Powershell.Properties.Settings>
<setting name="FileQueueAppPath2" serializeAs="String">
<value>C:\Projects\OS\OpenStack.Client.Powershell\OpenStack.Client.AsyncQueue\OpenStack.Client.AsyncQueue\bin\Debug\OpenStack.Client.AsyncQueue.exe</value>
</setting>
</OpenStack.Client.Powershell.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="OpenStack.Client.Powershell.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<OpenStack.Client.Powershell.Properties.Settings>
<setting name="FileQueueAppPath2" serializeAs="String">
<value>C:\Projects\OS\OpenStack.Client.Powershell\OpenStack.Client.AsyncQueue\OpenStack.Client.AsyncQueue\bin\Debug\OpenStack.Client.AsyncQueue.exe</value>
</setting>
</OpenStack.Client.Powershell.Properties.Settings>
</userSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
@ -21,4 +23,11 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
<appSettings>
<!--AWSProfileName is used to reference an account that has been registered with the SDK.
If using AWS Toolkit for Visual Studio then this value is the same value shown in the AWS Explorer.
It is also possible to registered an accounts using the <solution-dir>/packages/AWSSDK-X.X.X.X/tools/account-management.ps1 PowerShell script
that is bundled with the nuget package under the tools folder.-->
<add key="AWSProfileName" value="" />
</appSettings>
</configuration>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AWSSDK" version="2.0.11.0" targetFramework="net45" />
<package id="AWSSDK" version="2.1.3.0" targetFramework="net45" />
<package id="BouncyCastle" version="1.7.0" targetFramework="net40" />
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
<package id="OpenStack-SDK-DotNet" version="0.9.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
<package id="OpenStack-SDK-DotNet" version="0.9.1.0" targetFramework="net45" />
</packages>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

Binary file not shown.

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup>
<PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
<PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
</PropertyGroup>
<PropertyGroup>
<PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
<PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
</Target>
<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
</Project>

View File

@ -18,13 +18,11 @@ using System.Management.Automation;
using OpenStack.Client.Powershell.Cmdlets.Common;
using OpenStack.Storage;
namespace Rackspace.Client.Powershell.Cmdlets
namespace WidgetInc.Client.Powershell.Cmdlets
{
[Cmdlet("Hello", "RS", SupportsShouldProcess = true)]
[Cmdlet("Hello", "WidgetInc", SupportsShouldProcess = true)]
//[RequiredServiceIdentifierAttribute(OpenStack.Objects.Domain.Admin.Services.ObjectStorage)]
public class HelloRackspaceCmdlet : BasePSCmdlet
{
public class HelloWidgetIncCmdlet : BasePSCmdlet {
//=========================================================================================
/// <summary>
@ -33,20 +31,20 @@ namespace Rackspace.Client.Powershell.Cmdlets
//=========================================================================================
protected override void ProcessRecord()
{
Console.WriteLine("Hello World, from Rackspace!");
Console.WriteLine("Hello World, from WidgetInc!");
if (this.CoreClient != null)
{
var client = this.CoreClient.CreateServiceClient<IStorageServiceClient>();
//var client = this.CoreClient.CreateServiceClient<IStorageServiceClient>();
var connectTask = client.GetStorageAccount();
connectTask.Wait();
//var connectTask = client.GetStorageAccount();
//connectTask.Wait();
StorageAccount account = connectTask.Result;
int h = 8;
//StorageAccount account = connectTask.Result;
//int h = 8;
Console.WriteLine(this.Context.Settings.LocalTestDirectory);
//Console.WriteLine(this.Context.Settings.LocalTestDirectory);

View File

@ -0,0 +1,16 @@
<ServiceProvider name="WidgetInc" isDefault="false">
<add key="AuthenticationServiceURI" value="https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/" displayName="Authentication Service URI" helpText ="" isMandatory="True"/>
<add key="Username" value="" displayName="User name" helpText ="" isMandatory="True"/>
<add key="Password" value="" displayName="Password" helpText ="" isMandatory="True" />
<add key="DefaultTenantId" value="" displayName="Default Tenant Id" helpText ="" isMandatory="True"/>
<AvailabilityZones>
<AvailabilityZone id="1" isDefault="True" name="region-a.geo-1" shellForegroundColor="Green" />
<AvailabilityZone id="2" isDefault="False" name="region-b.geo-1" shellForegroundColor="Green" />
</AvailabilityZones>
<ServiceMaps>
<ServiceMap source="ObjectStorage" target="Object Storage"/>
<ServiceMap source="ImageManagement" target="Image Management"/>
<ServiceMap source="BlockStorage" target="Block Storage"/>
<ServiceMap source="Compute" target="Compute"/>
</ServiceMaps>
</ServiceProvider>

View File

@ -1,22 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<Testing>
<add key="TestServerName" value="TestServer" />
<add key="TestNetworkName" value="TestNetwork" />
<add key="TestPortName" value="TestPort" />
<add key="TestRouterName" value="TestRouterOO" />
<add key="TestSecurityGroupName" value="TestSecurityGroup" />
<add key="TestSnapshotName" value="TestSnapshot" />
<add key="TestStorageContainerName" value="TestContainer" />
<add key="TestSubnetName" value="TestSubnet" />
<add key="TestVolumeName" value="TestVolume" />
<add key="TestFilePath" value="e:\Projects\Testing\Anothertest.txt" />
<add key="TestStorageContainerSecondaryName" value="b10" />
<add key="LocalTestDirectory" value="Your moma" />
<add key="TestImageId" value="5a1408cb-25f2-43a6-b1d9-931f5e47c871" />
<add key="TestFlavorId" value="100" />
</Testing>
<appSettings>
<StorageManagement>
<add key="largeFileSize" value="314572800" />
<add key="defSegmentNumber" value="16" />
@ -30,16 +14,22 @@
<add key="NewReleaseFolder" value="e:\" />
<SharedContainers></SharedContainers>
</StorageManagement>
<IdentityServices>
<ServiceProvider name="Rackspace" isDefault="true">
<AvailabilityZones>
<AvailabilityZone id="1" isDefault="True" name="Rregion-a.geo-1" shellForegroundColor="Green" />
<AvailabilityZone id="2" isDefault="False" name="Rregion-b.geo-1" shellForegroundColor="Green" />
</AvailabilityZones>
<IdentityServices>
<ServiceProvider name="WidgetInc" isDefault="true">
<add key="AuthenticationServiceURI" value="" displayName="Authentication Service URI" isMandatory="true" />
<add key="Username" value="" displayName="User name" isMandatory="true" />
<add key="Password" value="" displayName="Password" isMandatory="true" />
<add key="DefaultTenantId" value="" displayName="Default Tenant Id" isMandatory="true" />
<AvailabilityZones>
<AvailabilityZone id="1" isDefault="True" name="Rregion-a.geo-1" shellForegroundColor="Green" />
<AvailabilityZone id="2" isDefault="False" name="Rregion-b.geo-1" shellForegroundColor="Green" />
</AvailabilityZones>
<ServiceMaps>
<ServiceMap source="ObjectStorage" target="Object Storage"/>
<ServiceMap source="ImageManagement" target="Image Management"/>
<ServiceMap source="BlockStorage" target="Block Storage"/>
<ServiceMap source="Compute" target="Compute"/>
</ServiceMaps>
</ServiceProvider>
</IdentityServices>
<ComputeServices>
@ -47,10 +37,6 @@
<add key="LogReadAttemptIntervalInMilliSeconds" value="40000" />
<add key="EnableCredentialTracking" value="true" />
<add key="SSHClientPath" value="C:\Users\tplummer\Desktop\Utilities\Putty.exe" />
</ComputeServices>
<!--<AvailabilityZones>
<AvailabilityZone id="1" isDefault="True" name="region-a.geo-1" shellForegroundColor="Green" />
<AvailabilityZone id="2" isDefault="False" name="region-b.geo-1" shellForegroundColor="Green" />
</AvailabilityZones>-->
</ComputeServices>
</appSettings>
</configuration>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Do not remove this test for UTF-8: if “Ω” doesnt appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
<package>
<metadata>
<id>widget-cli-powershell</id>
<title>widget-cli-powershell</title>
<version>2.0.0</version>
<authors>Lateralus</authors>
<owners>thatGuy</owners>
<summary>Thid package allows Users to manage their Openstack environments from the Powershell command line.</summary>
<description>Thid package allows Users to manage their Openstack environments from the Powershell command line.</description>
<tags>OpenStack Powershell CLI Windows</tags>
<copyright>2014</copyright>
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!--<iconUrl>https://raw.github.com/__CHOCO_PKG_OWNER_REPO__/master/__NAME__/__NAME__.png</iconUrl>-->
<!--<dependencies>
<dependency id="" version="" />
</dependencies>-->
<releaseNotes>This first release demonstrates the Mutli-Vendor functionality as well as a Read-onoly version of the ObjectStorage Provider.</releaseNotes>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>

View File

@ -1,9 +1,9 @@
@{
ModuleToProcess = 'HP.OpenStack.Client.Powershell.dll'
ModuleToProcess = 'WidgetInc.OpenStack.Client.Powershell.dll'
GUID="{847a28a4-6407-4aa6-8070-a4a51396db70}"
Author="Travis Plummer"
CompanyName="Hewlett-Packard Corporation"
Copyright="© Hewlett-Packard. All rights reserved."
Author="Lateralus"
CompanyName="WidgetInc Corporation"
Copyright="© WidgetInc. All rights reserved."
ModuleVersion="1.0.0.0"
PowerShellVersion="2.0"
CLRVersion="4.0.30319"

View File

@ -0,0 +1,38 @@

# Install the Extensions Package...
$packageName = 'widget-cli-powershell'
$installerType = 'msi'
$url = $env:USERPROFILE + '\Source\Builds\WidgetInc.Openstack.Deployment.msi'
$silentArgs = '/quiet'
$validExitCodes = @(0)
Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url" -validExitCodes $validExitCodes
try
{
# Add the extensions location to PSModulePath for easy loading later on..
$p = [Environment]::GetEnvironmentVariable("PSModulePath")
$p += ";" + $env:USERPROFILE + "\Documents\WindowsPowerShell\Modules\WidgetInc"
[Environment]::SetEnvironmentVariable("PSModulePath", $p)
# Import our Openstack.Client.Powershell assembly. This has the ConfigurationMAnager type which lets you
# register your Service Provider information.
$configManagerAsmPath = $env:USERPROFILE + "\Documents\WindowsPowerShell\Modules\Openstack-core\Openstack.Client.Powershell.dll"
add-type -Path ($configManagerAsmPath)
# Register the Service Provider. This requires the Extension Author to have a ServiceProvider.xml definition file in the
# Deployment Folder.
$serviceProviderPath = $env:USERPROFILE + "\Documents\WindowsPowerShell\Modules\WidgetInc\Deployment\ServiceProvider.xml"
$manager = New-Object -TypeName OpenStack.Client.Powershell.Utility.ConfigurationManager
$manager.WriteServiceProvider($serviceProviderPath)
Write-ChocolateySuccess "$packageName"
}
catch
{
Write-ChocolateyFailure "$packageName" "$($_.Exception.Message)"
throw
}

View File

@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Rackspace.Client.Powershell")]
[assembly: AssemblyTitle("WidgetInc.Client.Powershell")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Rackspace.Client.Powershell")]
[assembly: AssemblyProduct("WidgetInc.Client.Powershell")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

View File

@ -1,17 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Openstack.Client.Powershell.Utility;
using OpenStack.Client.Powershell.Utility;
using OpenStack.Identity;
namespace Rackspace.Client.Powershell.Utility
namespace WidgetInc.Client.Powershell.Utility
{
[ServiceProviderAttribute("Rackspace")]
public class RackspaceRegistrationManager : RegistrationManager
[ServiceProviderAttribute("WidgetInc")]
public class WidgetIncRegistrationManager : RegistrationManager
{
public override RegistrationResponse Register(ServiceProvider serviceProvider)
{
@ -25,14 +20,6 @@ namespace Rackspace.Client.Powershell.Utility
return new RegistrationResponse(credential, serviceProvider);
}
private SecureString GetSecureString(string password)
{
SecureString securePassword = new SecureString();
password.ToCharArray().ToList().ForEach(securePassword.AppendChar);
return SecureStringHelper.ConvertToSecureString(password);
}
}
}

View File

@ -7,8 +7,8 @@
<ProjectGuid>{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Rackspace.Client.Powershell</RootNamespace>
<AssemblyName>Rackspace.Openstack.Client.Powershell</AssemblyName>
<RootNamespace>WidgetInc.Client.Powershell</RootNamespace>
<AssemblyName>WidgetInc.Openstack.Client.Powershell</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
@ -18,7 +18,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\..\..\Documents\WindowsPowerShell\Modules\Openstack\Rackspace\</OutputPath>
<OutputPath>..\..\..\..\Documents\WindowsPowerShell\Modules\WidgetInc\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -34,10 +34,9 @@
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="OpenStack, Version=0.9.1.0, Culture=neutral, PublicKeyToken=baf191d8aca7391c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<Reference Include="OpenStack">
<HintPath>..\packages\OpenStack-SDK-DotNet.0.9.1.0\lib\net40\OpenStack.dll</HintPath>
</Reference>
<Reference Include="System" />
@ -62,17 +61,19 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Cmdlets\HelloRackspaceCmdlet.cs" />
<Compile Include="Cmdlets\HelloWidgetIncCmdlet.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utility\RackspaceRegistrationManager.cs" />
<Compile Include="Utility\WidgetIncRegistrationManager.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Deployment\Rackspace.config">
<None Include="Deployment\tools\chocolateyInstall.ps1" />
<None Include="Deployment\WidgetInc.config">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Deployment\Rackspace.psd1">
<None Include="Deployment\WidgetInc.nuspec" />
<None Include="Deployment\WidgetInc.psd1">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
@ -83,10 +84,16 @@
<Name>Openstack.Client.Powershell</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Deployment\ServiceProvider.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<PropertyGroup>
<PostBuildEvent>copy .\Deployment\Rackspace.psd1 C:\Users\tplummer\Documents\WindowsPowerShell\Modules\Openstack\Rackspace\Rackspace.psd1</PostBuildEvent>
<PostBuildEvent>md %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\WidgetInc
copy .\Deployment\WidgetInc.psd1 %25USERPROFILE%25\Documents\WindowsPowerShell\Modules\WidgetInc\WidgetInc.psd1</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">

View File

@ -0,0 +1,29 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WidgetInc.Openstack.Client.Powershell", "WidgetInc.Openstack.Client.Powershell.csproj", "{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{CF5FC33F-FBA8-4028-A6D5-D6D8002DB57E}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
.nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -3,6 +3,6 @@
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
<package id="OpenStack-SDK-DotNet" version="0.9.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
<package id="OpenStack-SDK-DotNet" version="0.9.1.0" targetFramework="net45" />
</packages>

View File

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "WidgetInc.Openstack.Deployment", "WidgetInc.Openstack.Deployment\WidgetInc.Openstack.Deployment.vdproj", "{1896E037-7922-4FA5-8B1A-56C8841F0113}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Default = Debug|Default
Release|Default = Release|Default
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1896E037-7922-4FA5-8B1A-56C8841F0113}.Debug|Default.ActiveCfg = Debug
{1896E037-7922-4FA5-8B1A-56C8841F0113}.Debug|Default.Build.0 = Debug
{1896E037-7922-4FA5-8B1A-56C8841F0113}.Release|Default.ActiveCfg = Release
{1896E037-7922-4FA5-8B1A-56C8841F0113}.Release|Default.Build.0 = Release
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,65 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core Functionality", "Core Functionality", "{E34080DF-5386-4484-8BE1-25A38A47FF72}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions (examples)", "Extensions (examples)", "{9A68856A-BE71-4EDB-9281-5D5331379DCA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AcmeInc", "AcmeInc", "{7213BD80-6393-4DD3-8835-6AC37BC0F804}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WidgetInc", "WidgetInc", "{29141AFB-8FAF-4E7F-8748-EA65E5FD3F3A}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "WidgetInc.Openstack.Deployment", "..\WidgetInc.Openstack.Deployment\WidgetInc.Openstack.Deployment\WidgetInc.Openstack.Deployment.vdproj", "{1896E037-7922-4FA5-8B1A-56C8841F0113}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Openstack.Client.Powershell.Deployment", "..\Openstack.Client.Powershell.Deployment\Openstack.Client.Powershell.Deployment\Openstack.Client.Powershell.Deployment.vdproj", "{ED796A88-B8B7-49FC-9B16-2FD43492DADB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Openstack.Client.Powershell", "Openstack.Client.Powershell\Openstack.Client.Powershell.csproj", "{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AcmeInc.Openstack.Client.Powershell", "AcmeInc.Openstack.Client.Powershell\AcmeInc.Openstack.Client.Powershell.csproj", "{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WidgetInc.Openstack.Client.Powershell", "WidgetInc.Openstack.Client.Powershell\WidgetInc.Openstack.Client.Powershell.csproj", "{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "AcmeInc.Openstack.Deployment", "AcmeInc.Openstack.Deployment\AcmeInc.Openstack.Deployment\AcmeInc.Openstack.Deployment.vdproj", "{D2DB9636-72E1-47E2-98E8-E23AFD996109}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
TransformTool Build|Any CPU = TransformTool Build|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.Release|Any CPU.Build.0 = Release|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.TransformTool Build|Any CPU.ActiveCfg = TransformTool Build|Any CPU
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD}.TransformTool Build|Any CPU.Build.0 = TransformTool Build|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.Release|Any CPU.Build.0 = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.TransformTool Build|Any CPU.ActiveCfg = Release|Any CPU
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD}.TransformTool Build|Any CPU.Build.0 = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.Release|Any CPU.Build.0 = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.TransformTool Build|Any CPU.ActiveCfg = Release|Any CPU
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF}.TransformTool Build|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{7213BD80-6393-4DD3-8835-6AC37BC0F804} = {9A68856A-BE71-4EDB-9281-5D5331379DCA}
{29141AFB-8FAF-4E7F-8748-EA65E5FD3F3A} = {9A68856A-BE71-4EDB-9281-5D5331379DCA}
{1896E037-7922-4FA5-8B1A-56C8841F0113} = {29141AFB-8FAF-4E7F-8748-EA65E5FD3F3A}
{ED796A88-B8B7-49FC-9B16-2FD43492DADB} = {E34080DF-5386-4484-8BE1-25A38A47FF72}
{32BAC168-2EC8-4074-9E6D-8C13460DCFAD} = {E34080DF-5386-4484-8BE1-25A38A47FF72}
{B6C5D486-BEDE-4E4F-8035-63B72513E4BD} = {7213BD80-6393-4DD3-8835-6AC37BC0F804}
{8E2903DF-9FB6-48F8-85BF-FD2422BE38AF} = {29141AFB-8FAF-4E7F-8748-EA65E5FD3F3A}
{D2DB9636-72E1-47E2-98E8-E23AFD996109} = {7213BD80-6393-4DD3-8835-6AC37BC0F804}
EndGlobalSection
EndGlobal