github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/provider/gce/google/conn_machines.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package google
     5  
     6  import "github.com/juju/errors"
     7  
     8  // ListMachineTypes returns a list of MachineType available for the
     9  // given zone.
    10  func (gce *Connection) ListMachineTypes(zone string) ([]MachineType, error) {
    11  	machines, err := gce.service.ListMachineTypes(gce.projectID, zone)
    12  	if err != nil {
    13  		return nil, errors.Trace(err)
    14  	}
    15  	res := make([]MachineType, len(machines.Items))
    16  	for i, machine := range machines.Items {
    17  		deprecated := false
    18  		if machine.Deprecated != nil {
    19  			deprecated = machine.Deprecated.State != ""
    20  		}
    21  		res[i] = MachineType{
    22  			CreationTimestamp:            machine.CreationTimestamp,
    23  			Deprecated:                   deprecated,
    24  			Description:                  machine.Description,
    25  			GuestCpus:                    machine.GuestCpus,
    26  			Id:                           machine.Id,
    27  			ImageSpaceGb:                 machine.ImageSpaceGb,
    28  			Kind:                         machine.Kind,
    29  			MaximumPersistentDisks:       machine.MaximumPersistentDisks,
    30  			MaximumPersistentDisksSizeGb: machine.MaximumPersistentDisksSizeGb,
    31  			MemoryMb:                     machine.MemoryMb,
    32  			Name:                         machine.Name,
    33  		}
    34  	}
    35  	return res, nil
    36  }