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
}