protected override void ProcessRecord() { base.ProcessRecord(); ResourceRecordSetsResource.ListRequest rrsetListRequest = Service.ResourceRecordSets.List(Project, Zone); ResourceRecordSetsListResponse rrsetListResponse = rrsetListRequest.Execute(); IList <ResourceRecordSet> rrsetList = rrsetListResponse.Rrsets; if (!(Filter == null || Filter.Length == 0)) { HashSet <string> TypeFilterHash = new HashSet <string>(Filter); HashSet <ResourceRecordSet> rrsetHash = new HashSet <ResourceRecordSet>(rrsetList); foreach (ResourceRecordSet rrset in rrsetList) { if (!TypeFilterHash.Contains(rrset.Type)) { rrsetHash.Remove(rrset); } } WriteObject(rrsetHash, true); } else { WriteObject(rrsetList, true); } }
protected override void ProcessRecord() { base.ProcessRecord(); if (!ShouldProcess($"{Project}/{Zone}", "Delete ManagedZone")) { return; } ResourceRecordSetsResource.ListRequest rrsetListRequest = Service.ResourceRecordSets.List(Project, Zone); ResourceRecordSetsListResponse rrsetListResponse = rrsetListRequest.Execute(); IList <ResourceRecordSet> rrsetList = rrsetListResponse.Rrsets; IList <ResourceRecordSet> nonDefaultRrsets = new List <ResourceRecordSet>(); foreach (ResourceRecordSet rrset in rrsetList) { if (!rrset.Type.Equals("NS") && !rrset.Type.Equals("SOA")) { nonDefaultRrsets.Add(rrset); } } if (nonDefaultRrsets.Count > 0) { if (!Force && !ShouldContinue($"{Project}/{Zone}", "Delete Non-Empty ManagedZone (with non-NS/SOA records)")) { return; } Change changeContent = new Change { Deletions = nonDefaultRrsets }; ChangesResource.CreateRequest changeCreateRequest = Service.Changes.Create(changeContent, Project, Zone); changeCreateRequest.Execute(); } ManagedZonesResource.DeleteRequest zoneDeleteRequest = Service.ManagedZones.Delete(Project, Zone); zoneDeleteRequest.Execute(); }
/// <summary> /// Returns all resource record sets in zone 'zone' in project 'project'. /// Apply filters if neccessary. /// </summary> private IEnumerable <ResourceRecordSet> GetResourceRecordSet(string project, string zone, string[] filters) { ResourceRecordSetsResource.ListRequest rrsetListRequest = Service.ResourceRecordSets.List(project, zone); do { ResourceRecordSetsListResponse rrsetListResponse = rrsetListRequest.Execute(); IList <ResourceRecordSet> rrsetList = rrsetListResponse.Rrsets; if (rrsetList != null) { if (filters != null && filters.Length != 0) { HashSet <string> TypeFilterHash = new HashSet <string>(filters); HashSet <ResourceRecordSet> rrsetHash = new HashSet <ResourceRecordSet>(rrsetList); foreach (ResourceRecordSet rrset in rrsetList) { if (!TypeFilterHash.Contains(rrset.Type)) { rrsetHash.Remove(rrset); } } foreach (ResourceRecordSet record in rrsetHash) { yield return(record); } } else { foreach (ResourceRecordSet record in rrsetList) { yield return(record); } } } rrsetListRequest.PageToken = rrsetListResponse.NextPageToken; }while (rrsetListRequest.PageToken != null); }