public override void Execute()
        {
            base.Execute();
            Dictionary <string, List <string> > auxAuthHeader = null;

            if (ParameterSetName.Contains(CortexParameterSetNames.ByVirtualHubObject))
            {
                this.ResourceGroupName  = this.ParentObject.ResourceGroupName;
                this.ParentResourceName = this.ParentObject.Name;
            }
            else if (ParameterSetName.Contains(CortexParameterSetNames.ByVirtualHubResourceId))
            {
                var parsedResourceId = new ResourceIdentifier(this.ParentResourceId);
                this.ResourceGroupName  = parsedResourceId.ResourceGroupName;
                this.ParentResourceName = parsedResourceId.ResourceName;
            }

            if (this.IsHubVnetConnectionPresent(this.ResourceGroupName, this.ParentResourceName, this.Name))
            {
                throw new PSArgumentException(string.Format(Properties.Resources.ChildResourceAlreadyPresentInResourceGroup, this.Name, this.ResourceGroupName, this.ParentResourceName));
            }

            var hubVnetConnection = new MNM.HubVirtualNetworkConnection(enableInternetSecurity: true);

            hubVnetConnection.Name = this.Name;

            if (this.EnableInternetSecurityFlag.HasValue && this.EnableInternetSecurityFlag.Value == false)
            {
                hubVnetConnection.EnableInternetSecurity = false;
            }

            //// Resolve the remote virtual network
            //// Let's not try to resolve this since this can be in other RG/Sub/Location
            if (ParameterSetName.Contains(CortexParameterSetNames.ByRemoteVirtualNetworkObject))
            {
                hubVnetConnection.RemoteVirtualNetwork = new MNM.SubResource(this.RemoteVirtualNetwork.Id);
            }
            else if (ParameterSetName.Contains(CortexParameterSetNames.ByRemoteVirtualNetworkResourceId))
            {
                hubVnetConnection.RemoteVirtualNetwork = new MNM.SubResource(this.RemoteVirtualNetworkId);
            }

            List <string> resourceIds = new List <string>();

            resourceIds.Add(hubVnetConnection.RemoteVirtualNetwork.Id);
            var auxHeaderDictionary = GetAuxilaryAuthHeaderFromResourceIds(resourceIds);

            if (auxHeaderDictionary != null && auxHeaderDictionary.Count > 0)
            {
                auxAuthHeader = new Dictionary <string, List <string> >(auxHeaderDictionary);
            }

            ConfirmAction(
                Properties.Resources.CreatingResourceMessage,
                this.Name,
                () =>
            {
                WriteVerbose(String.Format(Properties.Resources.CreatingLongRunningOperationMessage, this.ResourceGroupName, this.Name));
                WriteObject(this.CreateOrUpdateHubVirtualNetworkConnection(this.ResourceGroupName, this.ParentResourceName, this.Name, hubVnetConnection, auxAuthHeader));
            });
        }
Beispiel #2
0
        public PSHubVirtualNetworkConnection CreateOrUpdateHubVirtualNetworkConnection(string resourceGroupName, string virtualHubName, string connectionName, MNM.HubVirtualNetworkConnection hubVirtualNetworkConnectionParameters, Dictionary <string, List <string> > customHeaders = null)
        {
            MNM.HubVirtualNetworkConnection hubVnetConnCreated;

            if (customHeaders == null)
            {
                hubVnetConnCreated = this.HubVirtualNetworkConnectionsClient.CreateOrUpdate(resourceGroupName, virtualHubName, connectionName, hubVirtualNetworkConnectionParameters);
            }
            else
            {
                // Execute the create call and pass the custom headers.
                using (var _result = this.HubVirtualNetworkConnectionsClient.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, connectionName, virtualHubName, hubVirtualNetworkConnectionParameters, customHeaders).GetAwaiter().GetResult())
                {
                    hubVnetConnCreated = _result.Body;
                }
            }

            return(this.ToPsHubVirtualNetworkConnection(hubVnetConnCreated));
        }