// attemptCreateService tries to create a new hosted service on Azure, with a // name it chooses (based on the given prefix), but recognizes that the name // may not be available. If the name is not available, it does not treat that // as an error but just returns nil. func attemptCreateService(azure *gwacl.ManagementAPI, prefix string, affinityGroupName string, location string) (*gwacl.CreateHostedService, error) { var err error name := gwacl.MakeRandomHostedServiceName(prefix) err = azure.CheckHostedServiceNameAvailability(name) if err != nil { // The calling function should retry. return nil, nil } req := gwacl.NewCreateHostedServiceWithLocation(name, name, location) req.AffinityGroup = affinityGroupName err = azure.AddHostedService(req) if err != nil { return nil, err } return req, nil }