Skip to content

Commit

Permalink
chore: adjusting vm structs with correct pointers on optional fields
Browse files Browse the repository at this point in the history
  • Loading branch information
publi0 committed Feb 14, 2025
1 parent 23d6287 commit d69b1ca
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 60 deletions.
80 changes: 46 additions & 34 deletions cmd/examples/compute/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,26 +73,32 @@ func ExampleListInstances() {

// Print instance details
for _, instance := range instances {
fmt.Printf("Instance: %s (ID: %s)\n", instance.Name, instance.ID)
fmt.Printf(" Machine Type: %s\n", instance.MachineType.Name)
fmt.Printf(" Image: %s\n", instance.Image.Name)
fmt.Printf("Instance: %s (ID: %s)\n", *instance.Name, instance.ID)
fmt.Printf(" Machine Type: %s\n", *instance.MachineType.Name)
fmt.Printf(" Image: %s\n", *instance.Image.Name)
fmt.Printf(" Status: %s\n", instance.Status)
fmt.Printf(" State: %s\n", instance.State)
fmt.Printf(" Created At: %s\n", instance.CreatedAt)
fmt.Printf(" Updated At: %s\n", instance.UpdatedAt)
fmt.Printf(" VPC ID: %s\n", *instance.Network.Vpc.ID)
fmt.Printf(" VPC Name: %s\n", *instance.Network.Vpc.Name)
for _, ni := range instance.Network.Interfaces {
fmt.Println(" Interface ID: ", ni.ID)
fmt.Println(" Interface Name: ", ni.Name)
fmt.Println(" Interface IPv4: ", ni.AssociatedPublicIpv4)
fmt.Println(" Interface IPv6: ", ni.IpAddresses.PublicIpv6)
fmt.Println(" Interface Local IPv4: ", ni.IpAddresses.PrivateIpv4)
fmt.Println("Is Primary: ", ni.Primary)
for _, sg := range ni.SecurityGroups {
fmt.Println(" Security Group ID: ", sg)
if instance.Network != nil {
if instance.Network.Vpc.ID != nil {
fmt.Printf(" VPC ID: %s\n", *instance.Network.Vpc.ID)
fmt.Printf(" VPC Name: %s\n", *instance.Network.Vpc.Name)
}
if instance.Network.Interfaces != nil {
for _, ni := range *instance.Network.Interfaces {
fmt.Println(" Interface ID: ", ni.ID)
fmt.Println(" Interface Name: ", ni.Name)
fmt.Println(" Interface IPv4: ", ni.AssociatedPublicIpv4)
fmt.Println(" Interface IPv6: ", ni.IpAddresses.PublicIpv6)
fmt.Println(" Interface Local IPv4: ", ni.IpAddresses.PrivateIpv4)
fmt.Println("Is Primary: ", ni.Primary)
for _, sg := range *ni.SecurityGroups {
fmt.Println(" Security Group ID: ", sg)
}
fmt.Println("--------")
}
}
fmt.Println("--------")
}
}
}
Expand Down Expand Up @@ -149,29 +155,35 @@ func ExampleGetInstance(id string) {
log.Fatal(err)
}

fmt.Printf("Instance: %s (ID: %s)\n", instance.Name, instance.ID)
fmt.Printf(" Machine Type: %s\n", instance.MachineType.Name)
fmt.Printf(" Image: %s\n", instance.Image.Name)
fmt.Printf("Instance: %s (ID: %s)\n", *instance.Name, instance.ID)
fmt.Printf(" Machine Type: %s\n", *instance.MachineType.Name)
fmt.Printf(" Image: %s\n", *instance.Image.Name)
fmt.Printf(" Status: %s\n", instance.Status)
fmt.Printf(" State: %s\n", instance.State)
fmt.Printf(" Created At: %s\n", instance.CreatedAt)
fmt.Printf(" Updated At: %s\n", instance.UpdatedAt)
if instance.Network.Vpc.ID != nil {
fmt.Printf(" VPC ID: %s\n", *instance.Network.Vpc.ID)
}
if instance.Network.Vpc.Name != nil {
fmt.Printf(" VPC Name: %s\n", *instance.Network.Vpc.Name)
}
fmt.Println(" User Data: ", instance.UserData)
for _, ni := range instance.Network.Interfaces {
fmt.Println(" Interface ID: ", ni.ID)
fmt.Println(" Interface Name: ", ni.Name)
fmt.Println(" Interface IPv4: ", ni.AssociatedPublicIpv4)
fmt.Println(" Interface IPv6: ", ni.IpAddresses.PublicIpv6)
fmt.Println(" Interface Local IPv4: ", ni.IpAddresses.PrivateIpv4)
fmt.Println("Is Primary: ", ni.Primary)
for _, sg := range ni.SecurityGroups {
fmt.Println(" Security Group ID: ", sg)
if instance.Network != nil {
if instance.Network.Vpc != nil {
if instance.Network.Vpc.ID != nil {
fmt.Printf(" VPC ID: %s\n", *instance.Network.Vpc.ID)
}
if instance.Network.Vpc.Name != nil {
fmt.Printf(" VPC Name: %s\n", *instance.Network.Vpc.Name)
}
}
fmt.Println(" User Data: ", instance.UserData)
if instance.Network.Vpc != nil {
for _, ni := range *instance.Network.Interfaces {
fmt.Println(" Interface ID: ", ni.ID)
fmt.Println(" Interface Name: ", ni.Name)
fmt.Println(" Interface IPv4: ", ni.AssociatedPublicIpv4)
fmt.Println(" Interface IPv6: ", ni.IpAddresses.PublicIpv6)
fmt.Println(" Interface Local IPv4: ", ni.IpAddresses.PrivateIpv4)
fmt.Println("Is Primary: ", ni.Primary)
for _, sg := range *ni.SecurityGroups {
fmt.Println(" Security Group ID: ", sg)
}
}
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions compute/images.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ type (
EndStandardSupportAt *string `json:"end_standard_support_at,omitempty"`
EndLifeAt *string `json:"end_life_at,omitempty"`
MinimumRequirements MinimumRequirements `json:"minimum_requirements"`
Labels []string `json:"labels,omitempty"`
AvailabilityZones []string `json:"availability_zones,omitempty"`
Labels *[]string `json:"labels,omitempty"`
AvailabilityZones *[]string `json:"availability_zones,omitempty"`
}

// MinimumRequirements represents the minimum hardware requirements for an image
Expand Down
48 changes: 24 additions & 24 deletions compute/instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,33 +30,33 @@ type (
}

InstanceTypes struct {
ID string `json:"id"`
Name string `json:"name"`
Vcpus int `json:"vcpus"`
Ram int `json:"ram"`
Disk int `json:"disk"`
ID string `json:"id"`
Name *string `json:"name"`
Vcpus *int `json:"vcpus"`
Ram *int `json:"ram"`
Disk *int `json:"disk"`
}

VmImage struct {
ID string `json:"id"`
Name string `json:"name"`
Name *string `json:"name"`
Platform *string `json:"platform,omitempty"`
}

Instance struct {
ID string `json:"id"`
Name string `json:"name,omitempty"`
MachineType InstanceTypes `json:"machine_type"`
Image VmImage `json:"image"`
Status string `json:"status"`
State string `json:"state"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty"`
SSHKeyName string `json:"ssh_key_name,omitempty"`
AvailabilityZone string `json:"availability_zone,omitempty"`
Network Network `json:"network"`
UserData string `json:"user_data,omitempty"`
Labels []string `json:"labels"`
ID string `json:"id"`
Name *string `json:"name,omitempty"`
MachineType *InstanceTypes `json:"machine_type"`
Image *VmImage `json:"image"`
Status string `json:"status"`
State string `json:"state"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty"`
SSHKeyName *string `json:"ssh_key_name,omitempty"`
AvailabilityZone *string `json:"availability_zone,omitempty"`
Network *Network `json:"network"`
UserData *string `json:"user_data,omitempty"`
Labels *[]string `json:"labels"`
}

CreateRequest struct {
Expand Down Expand Up @@ -131,15 +131,15 @@ type (
NetworkInterface struct {
ID string `json:"id"`
Name string `json:"name"`
SecurityGroups []string `json:"security_groups"`
Primary bool `json:"primary"`
AssociatedPublicIpv4 string `json:"associated_public_ipv4,omitempty"`
SecurityGroups *[]string `json:"security_groups"`
Primary *bool `json:"primary"`
AssociatedPublicIpv4 *string `json:"associated_public_ipv4,omitempty"`
IpAddresses IpAddressNewExpand `json:"ip_addresses"`
}

Network struct {
Vpc IDOrName `json:"vpc,omitempty"`
Interfaces []NetworkInterface `json:"interfaces,omitempty"`
Vpc *IDOrName `json:"vpc,omitempty"`
Interfaces *[]NetworkInterface `json:"interfaces,omitempty"`
}
)

Expand Down

0 comments on commit d69b1ca

Please sign in to comment.