func ipamConfigSetToIpamConfigs(ipamConfigSet *schema.Set) []dc.IPAMConfig { ipamConfigs := make([]dc.IPAMConfig, ipamConfigSet.Len()) for i, ipamConfigInt := range ipamConfigSet.List() { ipamConfigRaw := ipamConfigInt.(map[string]interface{}) ipamConfig := dc.IPAMConfig{} ipamConfig.Subnet = ipamConfigRaw["subnet"].(string) ipamConfig.IPRange = ipamConfigRaw["ip_range"].(string) ipamConfig.Gateway = ipamConfigRaw["gateway"].(string) auxAddressRaw := ipamConfigRaw["aux_address"].(map[string]interface{}) ipamConfig.AuxAddress = make(map[string]string, len(auxAddressRaw)) for k, v := range auxAddressRaw { ipamConfig.AuxAddress[k] = v.(string) } ipamConfigs[i] = ipamConfig } return ipamConfigs }
func deleteFirewallRules( d *schema.ResourceData, meta interface{}, rules *schema.Set, ors *schema.Set) error { var errs *multierror.Error var wg sync.WaitGroup wg.Add(ors.Len()) sem := make(chan struct{}, d.Get("parallelism").(int)) for _, rule := range ors.List() { // Put a sleep here to avoid DoS'ing the API time.Sleep(500 * time.Millisecond) go func(rule map[string]interface{}) { defer wg.Done() sem <- struct{}{} // Delete a single rule err := deleteFirewallRule(d, meta, rule) // If we have at least one UUID, we need to save the rule if len(rule["uuids"].(map[string]interface{})) > 0 { rules.Add(rule) } if err != nil { errs = multierror.Append(errs, err) } <-sem }(rule.(map[string]interface{})) } wg.Wait() return errs.ErrorOrNil() }
func deletePortForwards( d *schema.ResourceData, meta interface{}, forwards *schema.Set, ors *schema.Set) error { var errs *multierror.Error var wg sync.WaitGroup wg.Add(ors.Len()) sem := make(chan struct{}, 10) for _, forward := range ors.List() { // Put a sleep here to avoid DoS'ing the API time.Sleep(500 * time.Millisecond) go func(forward map[string]interface{}) { defer wg.Done() sem <- struct{}{} // Delete a single forward err := deletePortForward(d, meta, forward) // If we have a UUID, we need to save the forward if forward["uuid"].(string) != "" { forwards.Add(forward) } if err != nil { errs = multierror.Append(errs, err) } <-sem }(forward.(map[string]interface{})) } wg.Wait() return errs.ErrorOrNil() }