Exemplo n.º 1
0
        public override void ExecuteCmdlet()
        {
            PSPrivateDnsVirtualNetworkLink result       = null;
            PSPrivateDnsVirtualNetworkLink linkToUpdate = null;

            switch (this.ParameterSetName)
            {
            case FieldsParameterSetName:
            case ResourceParameterSetName:
            {
                if (!string.IsNullOrEmpty(this.ResourceId))
                {
                    PrivateDnsUtils.ParseVirtualNetworkId(this.ResourceId, out var resourceGroupName, out var zoneName, out var linkName);
                    this.ResourceGroupName = resourceGroupName;
                    this.ZoneName          = zoneName;
                    this.Name = linkName;
                }

                this.ZoneName = TrimTrailingDotInZoneName(this.ZoneName);

                linkToUpdate          = this.PrivateDnsClient.GetPrivateDnsLink(this.Name, this.ResourceGroupName, this.ZoneName);
                linkToUpdate.Etag     = "*";
                linkToUpdate.ZoneName = this.ZoneName;
                break;
            }

            case ObjectParameterSetName when(string.IsNullOrWhiteSpace(this.InputObject.Etag) || this.InputObject.Etag == "*") && !this.Overwrite.IsPresent:
                throw new PSArgumentException(string.Format(ProjectResources.Error_EtagNotSpecified, typeof(PSPrivateDnsVirtualNetworkLink).Name));

            case ObjectParameterSetName:
                linkToUpdate = this.InputObject;
                break;
            }

            if (this.Tag != null)
            {
                linkToUpdate.Tags = this.Tag;
            }

            if (this.IsRegistrationEnabled != null)
            {
                linkToUpdate.RegistrationEnabled = this.IsRegistrationEnabled.Value;
            }

            ConfirmAction(
                ProjectResources.Progress_Modifying,
                linkToUpdate?.Name,
                () =>
            {
                var overwrite = this.Overwrite.IsPresent || this.ParameterSetName != ObjectParameterSetName;
                result        = this.PrivateDnsClient.UpdatePrivateDnsLink(linkToUpdate, overwrite);

                WriteVerbose(ProjectResources.Success);
                WriteObject(result);
            });
        }
        public override void ExecuteCmdlet()
        {
            const bool deleted   = true;
            var        overwrite = this.Overwrite.IsPresent || this.ParameterSetName != ObjectParameterSetName;

            if (!string.IsNullOrEmpty(this.ResourceId))
            {
                PrivateDnsUtils.ParseVirtualNetworkId(this.ResourceId, out var resourceGroupName, out var zoneName, out var linkName);
                this.ResourceGroupName = resourceGroupName;
                this.ZoneName          = zoneName;
                this.Name = linkName;
            }

            if (!string.IsNullOrEmpty((this.ZoneName)))
            {
                this.ZoneName = TrimTrailingDotInZoneName(this.ZoneName);
            }

            var linkToDelete = (this.ParameterSetName != ObjectParameterSetName)
                ? this.PrivateDnsClient.GetLinkHandleNonExistentLink(this.ZoneName, this.ResourceGroupName, this.Name)
                : this.InputObject;

            if (linkToDelete == null)
            {
                this.WriteWarning(ProjectResources.Warning_InvalidLinkDetailsSpecified);
                return;
            }

            if ((string.IsNullOrWhiteSpace(linkToDelete.Etag) || linkToDelete.Etag == "*") && !overwrite)
            {
                throw new PSArgumentException(string.Format(ProjectResources.Error_EtagNotSpecified, typeof(PSPrivateDnsVirtualNetworkLink).Name));
            }

            if (!string.IsNullOrEmpty((linkToDelete.ZoneName)))
            {
                linkToDelete.ZoneName = TrimTrailingDotInZoneName(linkToDelete.ZoneName);
            }

            ConfirmAction(
                ProjectResources.Progress_RemovingLink,
                linkToDelete.Name,
                () =>
            {
                PrivateDnsClient.DeletePrivateDnsLink(linkToDelete, overwrite);

                WriteVerbose(ProjectResources.Success);
                WriteVerbose(string.Format(ProjectResources.Success_RemoveLink, linkToDelete.Name, linkToDelete.ResourceGroupName));

                if (this.PassThru)
                {
                    WriteObject(deleted);
                }
            });
        }
Exemplo n.º 3
0
        private static PSPrivateDnsVirtualNetworkLink ToPrivateDnsLink(VirtualNetworkLink link)
        {
            PrivateDnsUtils.ParseVirtualNetworkId(link.Id, out var resourceGroupName, out var zoneName, out var linkName);

            return(new PSPrivateDnsVirtualNetworkLink()
            {
                Name = link.Name,
                ResourceId = link.Id,
                ResourceGroupName = resourceGroupName,
                ZoneName = zoneName,
                Etag = link.Etag,
                Tags = TagsConversionHelper.CreateTagHashtable(link.Tags),
                VirtualNetworkId = link.VirtualNetwork.Id,
                RegistrationEnabled = link.RegistrationEnabled != null && (bool)link.RegistrationEnabled,
                ProvisioningState = link.ProvisioningState,
                VirtualNetworkLinkState = link.VirtualNetworkLinkState,
            });
        }