1package compute 2 3import ( 4 "fmt" 5 "strings" 6 7 "github.com/genevieve/leftovers/common" 8 gcpcompute "google.golang.org/api/compute/v1" 9) 10 11type urlMapsClient interface { 12 ListUrlMaps() (*gcpcompute.UrlMapList, error) 13 DeleteUrlMap(urlMap string) error 14} 15 16type UrlMaps struct { 17 client urlMapsClient 18 logger logger 19} 20 21func NewUrlMaps(client urlMapsClient, logger logger) UrlMaps { 22 return UrlMaps{ 23 client: client, 24 logger: logger, 25 } 26} 27 28func (u UrlMaps) List(filter string) ([]common.Deletable, error) { 29 urlMaps, err := u.client.ListUrlMaps() 30 if err != nil { 31 return nil, fmt.Errorf("List Url Maps: %s", err) 32 } 33 34 var resources []common.Deletable 35 36 for _, urlMap := range urlMaps.Items { 37 resource := NewUrlMap(u.client, urlMap.Name) 38 39 if !strings.Contains(resource.Name(), filter) { 40 continue 41 } 42 43 proceed := u.logger.PromptWithDetails(resource.Type(), resource.Name()) 44 if !proceed { 45 continue 46 } 47 48 resources = append(resources, resource) 49 } 50 51 return resources, nil 52} 53 54func (u UrlMaps) Type() string { 55 return "url-map" 56} 57