func()

in windows-builder/builder/builder/gce.go [293:324]


func (s *Server) setFirewallRule(bs *BuilderServer) error {
	list, err := s.service.Firewalls.List(s.projectID).Do()
	if err != nil {
		log.Printf("Could not list GCE firewalls: %+v", err)
		return err
	}
	for _, f := range list.Items {
		if f.Name == "allow-winrm-ingress" {
			log.Print("Firewall rule already exists")
			return nil
		}
	}

	firewallRule := &compute.Firewall{
		Allowed: []*compute.FirewallAllowed{
			&compute.FirewallAllowed{
				IPProtocol: "tcp",
				Ports:      []string{"5986"},
			},
		},
		Direction:    "INGRESS",
		Name:         "allow-winrm-ingress",
		SourceRanges: []string{"0.0.0.0/0"},
		Network:      prefix + s.projectID + "/global/networks/" + *bs.VPC,
	}
	_, err = s.service.Firewalls.Insert(s.projectID, firewallRule).Do()
	if err != nil {
		log.Printf("Error setting firewall rule: %v", err)
		return err
	}
	return nil
}