public override void ExecuteCmdlet() { CollectionCreationDetails details = null; OperationResultWithTrackingId response = null; Collection collection = null; collection = FindCollection(CollectionName); if (collection != null) { details = new CollectionCreationDetails() { Name = CollectionName, TemplateImageName = ImageName, BillingPlanName = collection.BillingPlanName }; if (ShouldProcess(CollectionName, "Update collection")) { response = CallClient(() => Client.Collections.Set(CollectionName, false, false, details), Client.Collections); } if (response != null) { WriteTrackingId(response); } } }
private void CanCreateNonPopulateOnlyAndDeleteRemoteAppService() { using (var undoContext = UndoContext.Current) { undoContext.Start(); var client = GetRemoteAppManagementClient(); string name = TestUtilities.GenerateName("ghut"); string activeDirectoryName = TestUtilities.GenerateName("ghut"); string billingPlanName = "Standard"; string templateName = TestUtilities.GenerateName("ghut"); // BUGBUG this must be a real template HttpStatusCode[] statusSuccess = { HttpStatusCode.OK, HttpStatusCode.Accepted }; ActiveDirectoryConfig adDetails = new ActiveDirectoryConfig() { DomainName = activeDirectoryName, UserName = "******", Password = "******" }; CollectionCreationDetails collectionDetails = new CollectionCreationDetails() { Name = name, AdInfo = adDetails, PlanName = billingPlanName, TemplateImageName = templateName, Description = "OneSDK test created.", Mode = CollectionMode.Apps, ReadyForPublishing = true, VNetName = "SomeVnet" }; CollectionResult queriedCollection = null; OperationResultWithTrackingId result = client.Collections.Create(false, collectionDetails); Assert.NotNull(result); Assert.Contains(result.StatusCode, statusSuccess); if (result.StatusCode == HttpStatusCode.Accepted) { // RemoteAppManagementClient.WaitForLongRunningOperation(result.TrackingId, timeoutMs, client); Assert.True(result.StatusCode == HttpStatusCode.OK, "Failed to create collection."); } queriedCollection = client.Collections.Get(collectionDetails.Name); Assert.Equal(queriedCollection.Collection.AdInfo.DomainName, collectionDetails.AdInfo.DomainName); Assert.Equal(queriedCollection.Collection.PlanName, collectionDetails.PlanName); Assert.Equal(queriedCollection.Collection.TemplateImageName, collectionDetails.TemplateImageName); Assert.Equal(queriedCollection.Collection.Mode, collectionDetails.Mode); Assert.Equal(queriedCollection.Collection.VNetName, collectionDetails.VNetName); Assert.Equal(queriedCollection.Collection.Description, collectionDetails.Description); Assert.Equal(queriedCollection.Collection.ReadyForPublishing, collectionDetails.ReadyForPublishing); OperationResultWithTrackingId response = client.Collections.Delete(queriedCollection.Collection.Name); Assert.True(result.StatusCode == HttpStatusCode.OK, "Delete collection did not return OK."); } }
public override void ExecuteCmdlet() { NetworkCredential creds = null; CollectionCreationDetails details = null; OperationResultWithTrackingId response = null; Collection collection = null; collection = FindCollection(CollectionName); if (collection == null) { return; } details = new CollectionCreationDetails() { Name = CollectionName, BillingPlanName = String.IsNullOrWhiteSpace(Plan) ? collection.BillingPlanName : Plan, Description = String.IsNullOrWhiteSpace(Description) ? collection.Description : Description, CustomRdpProperty = String.IsNullOrWhiteSpace(CustomRdpProperty) ? collection.CustomRdpProperty : CustomRdpProperty, TemplateImageName = collection.TemplateImageName }; switch (ParameterSetName) { case DomainJoined: { if (collection.AdInfo == null) { ErrorRecord er = RemoteAppCollectionErrorState.CreateErrorRecordFromString( Commands_RemoteApp.AadInfoCanNotBeAddedToCloudOnlyCollectionMessage, String.Empty, Client.Collections, ErrorCategory.InvalidArgument); ThrowTerminatingError(er); } details.AdInfo = new ActiveDirectoryConfig(); details.VnetName = collection.VnetName; details.AdInfo.DomainName = collection.AdInfo.DomainName; details.AdInfo.OrganizationalUnit = collection.AdInfo.OrganizationalUnit; if (Credential != null) { creds = Credential.GetNetworkCredential(); details.AdInfo.UserName = creds.UserName; details.AdInfo.Password = creds.Password; } break; } } response = CallClient(() => Client.Collections.Set(CollectionName, false, false, details), Client.Collections); if (response != null) { TrackingResult trackingId = new TrackingResult(response); WriteObject(trackingId); } }
private Collection CreateNewServiceWithPopulateOnlyTrue(RemoteAppManagementClient client) { string name = "hsut2861"; string activeDirectoryName = "ghutad"; string billingPlanName = "Standard"; string templateName = "bluerefresh.2014.08.21.vhd"; //GetReadyTemplateImageName(client); ActiveDirectoryConfig adDetails = new ActiveDirectoryConfig() { DomainName = activeDirectoryName, UserName = "******", Password = "******" }; CollectionCreationDetails collectionDetails = new CollectionCreationDetails() { Name = name, AdInfo = adDetails, PlanName = billingPlanName, TemplateImageName = templateName, Description = "OneSDK test created.", Mode = CollectionMode.Apps, ReadyForPublishing = true, VNetName = "SomeVnet" }; OperationResultWithTrackingId result = null; Assert.DoesNotThrow(() => { result = client.Collections.Create(true, collectionDetails); }); Assert.NotNull(result); // if OK is returned then the tracking id is the name of the newly created collection Assert.Equal(HttpStatusCode.OK, result.StatusCode); Assert.NotNull(result.TrackingId); // now check if the object is actually created at the backend CollectionResult queriedService = client.Collections.Get(collectionDetails.Name); Assert.Equal(HttpStatusCode.OK, queriedService.StatusCode); Assert.Equal(queriedService.Collection.Name, name); Assert.Equal(queriedService.Collection.PlanName, collectionDetails.PlanName); Assert.Equal(queriedService.Collection.TemplateImageName, collectionDetails.TemplateImageName); Assert.Equal(queriedService.Collection.Status, "Creating"); return(queriedService.Collection); }
public static int SetUpDefaultRemoteAppCollectionCreate(Mock <IRemoteAppManagementClient> clientMock, string collectionName, string region, string billingPlan, string imageName, string description, string customProperties, string trackingId) { CollectionCreationDetails collectionDetails = new CollectionCreationDetails() { Name = collectionName, PlanName = billingPlan, TemplateImageName = imageName, Mode = CollectionMode.Apps, Region = region, Description = description, CustomRdpProperty = customProperties }; List <Collection> collectionList = new List <Collection>() { new Collection() { Name = collectionDetails.Name, Region = collectionDetails.Region, PlanName = collectionDetails.PlanName, TemplateImageName = collectionDetails.TemplateImageName, Mode = collectionDetails.Mode, Description = collectionDetails.Description, Status = "Active" } }; OperationResultWithTrackingId response = new OperationResultWithTrackingId() { StatusCode = System.Net.HttpStatusCode.Accepted, TrackingId = trackingId, RequestId = "111-2222-4444" }; mockTrackingId = new List <TrackingResult>() { new TrackingResult(response) }; ISetup <IRemoteAppManagementClient, Task <OperationResultWithTrackingId> > setup = clientMock.Setup(c => c.Collections.CreateAsync(It.IsAny <bool>(), It.IsAny <CollectionCreationDetails>(), It.IsAny <CancellationToken>())); setup.Returns(Task.Factory.StartNew(() => response)); mockCollectionList = collectionList; return(mockCollectionList.Count); }
public override void ExecuteCmdlet() { // register the subscription for this service if it has not been before // sebsequent call to register is redundent RegisterSubscriptionWithRdfeForRemoteApp(); NetworkCredential creds = null; CollectionCreationDetails details = new CollectionCreationDetails() { Name = CollectionName, TemplateImageName = ImageName, Region = Location, PlanName = Plan, Description = Description, CustomRdpProperty = CustomRdpProperty, Mode = CollectionMode.Apps }; OperationResultWithTrackingId response = null; switch (ParameterSetName) { case DomainJoined: case AzureVNet: { creds = Credential.GetNetworkCredential(); details.VNetName = VNetName; if (SubnetName != null) { if (!IsFeatureEnabled(EnabledFeatures.azureVNet)) { ErrorRecord er = RemoteAppCollectionErrorState.CreateErrorRecordFromString( string.Format(Commands_RemoteApp.LinkAzureVNetFeatureNotEnabledMessage), String.Empty, Client.Account, ErrorCategory.InvalidOperation ); ThrowTerminatingError(er); } details.SubnetName = SubnetName; ValidateCustomerVNetParams(details.VNetName, details.SubnetName); if (DnsServers != null) { details.DnsServers = DnsServers.Split(new char[] { ',' }); } details.Region = Location; } details.AdInfo = new ActiveDirectoryConfig() { DomainName = Domain, OrganizationalUnit = OrganizationalUnit, UserName = creds.UserName, Password = creds.Password, }; break; } case NoDomain: default: { details.Region = Location; break; } } response = CallClient(() => Client.Collections.Create(false, details), Client.Collections); if (response != null) { TrackingResult trackingId = new TrackingResult(response); WriteObject(trackingId); } }
/// <summary> /// Creates a collection with the given details. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.RemoteApp.ICollectionOperations. /// </param> /// <param name='populateOnly'> /// Required. A flag denoting if the request is to populate the /// creation details of the collection or update and deploy (true for /// populate only). /// </param> /// <param name='collectionDetails'> /// Required. Details for the collection to be created. /// </param> /// <returns> /// The response containing the operation tracking id. /// </returns> public static Task <OperationResultWithTrackingId> CreateAsync(this ICollectionOperations operations, bool populateOnly, CollectionCreationDetails collectionDetails) { return(operations.CreateAsync(populateOnly, collectionDetails, CancellationToken.None)); }
/// <summary> /// Creates a collection with the given details. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.RemoteApp.ICollectionOperations. /// </param> /// <param name='populateOnly'> /// Required. A flag denoting if the request is to populate the /// creation details of the collection or update and deploy (true for /// populate only). /// </param> /// <param name='collectionDetails'> /// Required. Details for the collection to be created. /// </param> /// <returns> /// The response containing the operation tracking id. /// </returns> public static OperationResultWithTrackingId Create(this ICollectionOperations operations, bool populateOnly, CollectionCreationDetails collectionDetails) { return(Task.Factory.StartNew((object s) => { return ((ICollectionOperations)s).CreateAsync(populateOnly, collectionDetails); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult()); }
/// <summary> /// Sets a new information to the collection with given id. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.Azure.Management.RemoteApp.ICollectionOperations. /// </param> /// <param name='collectionName'> /// Required. The name of the collection. /// </param> /// <param name='forceRedeploy'> /// Required. A flag denoting if the request is to re-deploy the /// collection after it is updated. /// </param> /// <param name='populateOnly'> /// Required. A flag denoting if the request is to populate the /// collection details(true for populate only). /// </param> /// <param name='collectionDetails'> /// Required. Details for the collection to be created. /// </param> /// <returns> /// The response containing the operation tracking id. /// </returns> public static Task <OperationResultWithTrackingId> SetAsync(this ICollectionOperations operations, string collectionName, bool forceRedeploy, bool populateOnly, CollectionCreationDetails collectionDetails) { return(operations.SetAsync(collectionName, forceRedeploy, populateOnly, collectionDetails, CancellationToken.None)); }
public override void ExecuteCmdlet() { // register the subscription for this service if it has not been before // sebsequent call to register is redundent RegisterSubscriptionWithRdfeForRemoteApp(); NetworkCredential creds = null; CollectionCreationDetails details = new CollectionCreationDetails() { Name = CollectionName, TemplateImageName = ImageName, Region = Location, PlanName = Plan, Description = Description, CustomRdpProperty = CustomRdpProperty, Mode = (ResourceType == null || ResourceType == CollectionMode.Unassigned) ? CollectionMode.Apps : ResourceType.Value }; OperationResultWithTrackingId response = null; if (ParameterSetName == "AzureVNet") { details.VNetName = VNetName; details.SubnetName = SubnetName; ValidateCustomerVNetParams(details.VNetName, details.SubnetName); if (DnsServers != null) { details.DnsServers = DnsServers.Split(new char[] { ',' }); } if (!String.IsNullOrWhiteSpace(Domain) || Credential != null) { if (String.IsNullOrWhiteSpace(Domain) || Credential == null) { // you supplied either a domain or a cred, but not both. ErrorRecord er = RemoteAppCollectionErrorState.CreateErrorRecordFromString( Commands_RemoteApp.InvalidADArguments, String.Empty, Client.Collections, ErrorCategory.InvalidArgument ); ThrowTerminatingError(er); } creds = Credential.GetNetworkCredential(); details.AdInfo = new ActiveDirectoryConfig() { DomainName = Domain, OrganizationalUnit = OrganizationalUnit, UserName = creds.UserName, Password = creds.Password, }; } } else { if (String.IsNullOrEmpty(details.Region)) { ErrorRecord er = RemoteAppCollectionErrorState.CreateErrorRecordFromString( Commands_RemoteApp.InvalidLocationArgument, String.Empty, Client.Collections, ErrorCategory.InvalidArgument ); ThrowTerminatingError(er); } } response = CallClient(() => Client.Collections.Create(false, details), Client.Collections); if (response != null) { TrackingResult trackingId = new TrackingResult(response); WriteObject(trackingId); } }
public static int SetUpDefaultRemoteAppCollectionSet(Mock <IRemoteAppManagementClient> clientMock, string collectionName, string subscriptionId, string billingPlan, string imageName, PSCredential credential, string domainName, string trackingId) { NetworkCredential cred = credential != null?credential.GetNetworkCredential() : null; CollectionCreationDetails collectionDetails = new CollectionCreationDetails() { Name = collectionName, PlanName = billingPlan, TemplateImageName = imageName, Mode = CollectionMode.Apps, Description = "unit test" }; if (cred != null) { collectionDetails.AdInfo = new ActiveDirectoryConfig() { DomainName = domainName, UserName = cred.UserName, Password = cred.Password }; } List <Collection> collectionList = new List <Collection>() { new Collection() { Name = collectionDetails.Name, PlanName = collectionDetails.PlanName, TemplateImageName = collectionDetails.TemplateImageName, Mode = collectionDetails.Mode, Description = collectionDetails.Description, Status = "Active", AdInfo = collectionDetails.AdInfo != null ? collectionDetails.AdInfo : null } }; OperationResultWithTrackingId response = new OperationResultWithTrackingId() { StatusCode = System.Net.HttpStatusCode.Accepted, TrackingId = trackingId, RequestId = "222-3456-789" }; mockTrackingId = new List <TrackingResult>() { new TrackingResult(response) }; ISetup <IRemoteAppManagementClient, Task <OperationResultWithTrackingId> > setup = clientMock.Setup( c => c.Collections.SetAsync( collectionName, It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <CollectionUpdateDetails>(), It.IsAny <CancellationToken>())); setup.Returns(Task.Factory.StartNew(() => response)); mockCollectionList = collectionList; return(mockCollectionList.Count); }