func NewObjects() *Objects {
	return &Objects{
		bag: []reconciler.Object{},
	}
}
NewObjects returns nag
package gcp
import (
	"cloud.google.com/go/compute/metadata"
	"flag"
	"google.golang.org/api/googleapi"
	"net/http"
	"regexp"
	"sigs.k8s.io/controller-reconciler/pkg/reconciler"
	"strings"
)
var (
	projectID, zone string
)
func init() {
	flag.StringVar(&projectID, "gcpproject", "",
		"GCP Project ID. Required for outside cluster.")
	flag.StringVar(&zone, "gcpzone", "",
		"GCP Zone. Required for outside cluster.")
}
func CompliantLabelString(s string) string {
	s = strings.ToLower(s)
	reg, _ := regexp.Compile("[^a-z0-9_-]+")
	s = reg.ReplaceAllString(s, "-")
	return s
}
func CompliantLabelMap(in map[string]string) map[string]string {
	out := make(map[string]string)
	for k, v := range in {
		out[CompliantLabelString(k)] = CompliantLabelString(v)
	}
	return out
}
func IsNotAuthorized(err error) bool {
	return isGoogleErrorWithCode(err, http.StatusForbidden)
}
func IsNotFound(err error) bool {
	return isGoogleErrorWithCode(err, http.StatusNotFound)
}
func isGoogleErrorWithCode(err error, code int) bool {
	if err == nil {
		return false
	}
	if ge, ok := err.(*googleapi.Error); ok {
		return ge.Code == code
	}
	return false
}
func GetProjectFromMetadata() (string, error) {
	if projectID != "" {
		return projectID, nil
	}
	return metadata.ProjectID()
}
func GetZoneFromMetadata() (string, error) {
	if zone != "" {
		return zone, nil
	}
	return metadata.Zone()
}
func GetFilterStringFromLabels(map[string]string) string {
	return ""
}
type Objects struct {
	err     error
	context interface{}
	bag     []reconciler.Object
	labels  map[string]string
}