Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions oxide/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@

package oxide

// This file contains hand-written helper methods for generated types.

import "fmt"

// String helpers for oneOf types whose variants are all string or string-like (Name, NameOrId,
// etc.).

// String returns the string representation of the RouteDestination's value.
// Returns an empty string if no variant is set.
func (v RouteDestination) String() string {
Expand Down Expand Up @@ -93,3 +98,97 @@ func (v RouteTarget) String() string {
panic(fmt.Sprintf("unhandled RouteTarget variant: %T", val))
}
}

// Constructor helpers for oneOf types whose variants are all string or string-like.

// NewRouteDestination creates a RouteDestination from a type constant and string value.
func NewRouteDestination(t RouteDestinationType, value string) (RouteDestination, error) {
switch t {
case RouteDestinationTypeIp:
return RouteDestination{Value: &RouteDestinationIp{Value: value}}, nil
case RouteDestinationTypeIpNet:
return RouteDestination{Value: &RouteDestinationIpNet{Value: IpNet(value)}}, nil
case RouteDestinationTypeVpc:
return RouteDestination{Value: &RouteDestinationVpc{Value: Name(value)}}, nil
case RouteDestinationTypeSubnet:
return RouteDestination{Value: &RouteDestinationSubnet{Value: Name(value)}}, nil
default:
return RouteDestination{}, fmt.Errorf("unknown RouteDestinationType: %s", t)
}
}

// NewRouteTarget creates a RouteTarget from a type constant and string value.
// For RouteTargetTypeDrop, the value is ignored.
func NewRouteTarget(t RouteTargetType, value string) (RouteTarget, error) {
switch t {
case RouteTargetTypeIp:
return RouteTarget{Value: &RouteTargetIp{Value: value}}, nil
case RouteTargetTypeVpc:
return RouteTarget{Value: &RouteTargetVpc{Value: Name(value)}}, nil
case RouteTargetTypeSubnet:
return RouteTarget{Value: &RouteTargetSubnet{Value: Name(value)}}, nil
case RouteTargetTypeInstance:
return RouteTarget{Value: &RouteTargetInstance{Value: Name(value)}}, nil
case RouteTargetTypeInternetGateway:
return RouteTarget{Value: &RouteTargetInternetGateway{Value: Name(value)}}, nil
case RouteTargetTypeDrop:
return RouteTarget{Value: &RouteTargetDrop{}}, nil
default:
return RouteTarget{}, fmt.Errorf("unknown RouteTargetType: %s", t)
}
}

// NewVpcFirewallRuleHostFilter creates a VpcFirewallRuleHostFilter from a type
// constant and string value.
func NewVpcFirewallRuleHostFilter(
t VpcFirewallRuleHostFilterType,
value string,
) (VpcFirewallRuleHostFilter, error) {
switch t {
case VpcFirewallRuleHostFilterTypeVpc:
return VpcFirewallRuleHostFilter{
Value: &VpcFirewallRuleHostFilterVpc{Value: Name(value)},
}, nil
case VpcFirewallRuleHostFilterTypeSubnet:
return VpcFirewallRuleHostFilter{
Value: &VpcFirewallRuleHostFilterSubnet{Value: Name(value)},
}, nil
case VpcFirewallRuleHostFilterTypeInstance:
return VpcFirewallRuleHostFilter{
Value: &VpcFirewallRuleHostFilterInstance{Value: Name(value)},
}, nil
case VpcFirewallRuleHostFilterTypeIp:
return VpcFirewallRuleHostFilter{Value: &VpcFirewallRuleHostFilterIp{Value: value}}, nil
case VpcFirewallRuleHostFilterTypeIpNet:
return VpcFirewallRuleHostFilter{
Value: &VpcFirewallRuleHostFilterIpNet{Value: IpNet(value)},
}, nil
default:
return VpcFirewallRuleHostFilter{}, fmt.Errorf(
"unknown VpcFirewallRuleHostFilterType: %s",
t,
)
}
}

// NewVpcFirewallRuleTarget creates a VpcFirewallRuleTarget from a type constant
// and string value.
func NewVpcFirewallRuleTarget(
t VpcFirewallRuleTargetType,
value string,
) (VpcFirewallRuleTarget, error) {
switch t {
case VpcFirewallRuleTargetTypeVpc:
return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetVpc{Value: Name(value)}}, nil
case VpcFirewallRuleTargetTypeSubnet:
return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetSubnet{Value: Name(value)}}, nil
case VpcFirewallRuleTargetTypeInstance:
return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetInstance{Value: Name(value)}}, nil
case VpcFirewallRuleTargetTypeIp:
return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetIp{Value: value}}, nil
case VpcFirewallRuleTargetTypeIpNet:
return VpcFirewallRuleTarget{Value: &VpcFirewallRuleTargetIpNet{Value: IpNet(value)}}, nil
default:
return VpcFirewallRuleTarget{}, fmt.Errorf("unknown VpcFirewallRuleTargetType: %s", t)
}
}