in cloudstack/data_source_cloudstack_vpn_connection.go [54:88]
func datasourceCloudStackVPNConnectionRead(d *schema.ResourceData, meta interface{}) error {
cs := meta.(*cloudstack.CloudStackClient)
p := cs.VPN.NewListVpnConnectionsParams()
csVPNConnections, err := cs.VPN.ListVpnConnections(p)
if err != nil {
return fmt.Errorf("Failed to list VPNs: %s", err)
}
filters := d.Get("filter")
var vpnConnections []*cloudstack.VpnConnection
for _, v := range csVPNConnections.VpnConnections {
match, err := applyVPNConnectionFilters(v, filters.(*schema.Set))
if err != nil {
return err
}
if match {
vpnConnections = append(vpnConnections, v)
}
}
if len(vpnConnections) == 0 {
return fmt.Errorf("No VPN Connection is matching with the specified regex")
}
//return the latest VPN Connection from the list of filtered VPN Connections according
//to its creation date
vpnConnection, err := latestVPNConnection(vpnConnections)
if err != nil {
return err
}
log.Printf("[DEBUG] Selected VPN Connections: %s\n", vpnConnection.Id)
return vpnConnectionDescriptionAttributes(d, vpnConnection)
}