code: func (az *Cloud) CreateOrUpdateSecurityGroup(service *v1.Service, sg network.SecurityGroup) error {
  	if az.Config.shouldOmitCloudProviderBackoff() {
  		ctx, cancel := getContextWithCancel()
  		defer cancel()
  
  		resp, err := az.SecurityGroupsClient.CreateOrUpdate(ctx, az.ResourceGroup, *sg.Name, sg)
  		klog.V(10).Infof("SecurityGroupsClient.CreateOrUpdate(%s): end", *sg.Name)
  		if err == nil {
  			if isSuccessHTTPResponse(resp) {
  				// Invalidate the cache right after updating
  				az.nsgCache.Delete(*sg.Name)
  			} else if resp != nil {
  				return fmt.Errorf("HTTP response %q", resp.Status)
  			}
  		}
  		return err
  	}
  
  	return az.CreateOrUpdateSGWithRetry(service, sg)
  }
docs: // CreateOrUpdateSecurityGroup invokes az.SecurityGroupsClient.CreateOrUpdate with exponential backoff retry