Merge pull request #4288 from troytoman/gce-network-uri
enable support for Google Compute XPN
This commit is contained in:
commit
c61c7765ec
|
@ -37,6 +37,7 @@ type Config struct {
|
||||||
MachineType string `mapstructure:"machine_type"`
|
MachineType string `mapstructure:"machine_type"`
|
||||||
Metadata map[string]string `mapstructure:"metadata"`
|
Metadata map[string]string `mapstructure:"metadata"`
|
||||||
Network string `mapstructure:"network"`
|
Network string `mapstructure:"network"`
|
||||||
|
NetworkProjectId string `mapstructure:"network_project_id"`
|
||||||
OmitExternalIP bool `mapstructure:"omit_external_ip"`
|
OmitExternalIP bool `mapstructure:"omit_external_ip"`
|
||||||
Preemptible bool `mapstructure:"preemptible"`
|
Preemptible bool `mapstructure:"preemptible"`
|
||||||
RawStateTimeout string `mapstructure:"state_timeout"`
|
RawStateTimeout string `mapstructure:"state_timeout"`
|
||||||
|
|
|
@ -67,6 +67,7 @@ type InstanceConfig struct {
|
||||||
Metadata map[string]string
|
Metadata map[string]string
|
||||||
Name string
|
Name string
|
||||||
Network string
|
Network string
|
||||||
|
NetworkProjectId string
|
||||||
OmitExternalIP bool
|
OmitExternalIP bool
|
||||||
Preemptible bool
|
Preemptible bool
|
||||||
Region string
|
Region string
|
||||||
|
|
|
@ -14,6 +14,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"google.golang.org/api/compute/v1"
|
||||||
|
|
||||||
"github.com/mitchellh/packer/common"
|
"github.com/mitchellh/packer/common"
|
||||||
"github.com/mitchellh/packer/packer"
|
"github.com/mitchellh/packer/packer"
|
||||||
"github.com/mitchellh/packer/version"
|
"github.com/mitchellh/packer/version"
|
||||||
|
@ -21,7 +23,6 @@ import (
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"golang.org/x/oauth2/google"
|
"golang.org/x/oauth2/google"
|
||||||
"golang.org/x/oauth2/jwt"
|
"golang.org/x/oauth2/jwt"
|
||||||
"google.golang.org/api/compute/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// driverGCE is a Driver implementation that actually talks to GCE.
|
// driverGCE is a Driver implementation that actually talks to GCE.
|
||||||
|
@ -297,8 +298,11 @@ func (d *driverGCE) RunInstance(c *InstanceConfig) (<-chan error, error) {
|
||||||
// TODO(mitchellh): deprecation warnings
|
// TODO(mitchellh): deprecation warnings
|
||||||
|
|
||||||
// Get the network
|
// Get the network
|
||||||
|
if c.NetworkProjectId == "" {
|
||||||
|
c.NetworkProjectId = d.projectId
|
||||||
|
}
|
||||||
d.ui.Message(fmt.Sprintf("Loading network: %s", c.Network))
|
d.ui.Message(fmt.Sprintf("Loading network: %s", c.Network))
|
||||||
network, err := d.service.Networks.Get(d.projectId, c.Network).Do()
|
network, err := d.service.Networks.Get(c.NetworkProjectId, c.Network).Do()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -315,7 +319,7 @@ func (d *driverGCE) RunInstance(c *InstanceConfig) (<-chan error, error) {
|
||||||
subnetworkSelfLink := ""
|
subnetworkSelfLink := ""
|
||||||
if c.Subnetwork != "" {
|
if c.Subnetwork != "" {
|
||||||
d.ui.Message(fmt.Sprintf("Loading subnetwork: %s for region: %s", c.Subnetwork, c.Region))
|
d.ui.Message(fmt.Sprintf("Loading subnetwork: %s for region: %s", c.Subnetwork, c.Region))
|
||||||
subnetwork, err := d.service.Subnetworks.Get(d.projectId, c.Region, c.Subnetwork).Do()
|
subnetwork, err := d.service.Subnetworks.Get(c.NetworkProjectId, c.Region, c.Subnetwork).Do()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,7 @@ func (s *StepCreateInstance) Run(state multistep.StateBag) multistep.StepAction
|
||||||
Metadata: metadata,
|
Metadata: metadata,
|
||||||
Name: name,
|
Name: name,
|
||||||
Network: c.Network,
|
Network: c.Network,
|
||||||
|
NetworkProjectId: c.NetworkProjectId,
|
||||||
OmitExternalIP: c.OmitExternalIP,
|
OmitExternalIP: c.OmitExternalIP,
|
||||||
Preemptible: c.Preemptible,
|
Preemptible: c.Preemptible,
|
||||||
Region: c.Region,
|
Region: c.Region,
|
||||||
|
|
|
@ -172,6 +172,9 @@ builder.
|
||||||
- `network` (string) - The Google Compute network to use for the
|
- `network` (string) - The Google Compute network to use for the
|
||||||
launched instance. Defaults to `"default"`.
|
launched instance. Defaults to `"default"`.
|
||||||
|
|
||||||
|
- 'network_project_id' (string) - The project ID for the network and subnetwork
|
||||||
|
to use for launched instance. Defaults to `project_id`.
|
||||||
|
|
||||||
- `omit_external_ip` (boolean) - If true, the instance will not have an external IP.
|
- `omit_external_ip` (boolean) - If true, the instance will not have an external IP.
|
||||||
`use_internal_ip` must be true if this property is true.
|
`use_internal_ip` must be true if this property is true.
|
||||||
|
|
||||||
|
@ -198,7 +201,7 @@ builder.
|
||||||
- `state_timeout` (string) - The time to wait for instance state changes.
|
- `state_timeout` (string) - The time to wait for instance state changes.
|
||||||
Defaults to `"5m"`.
|
Defaults to `"5m"`.
|
||||||
|
|
||||||
- `subnetwork` (string) - The Google Compute subnetwork to use for the launced
|
- `subnetwork` (string) - The Google Compute subnetwork to use for the launched
|
||||||
instance. Only required if the `network` has been created with custom
|
instance. Only required if the `network` has been created with custom
|
||||||
subnetting.
|
subnetting.
|
||||||
Note, the region of the subnetwork must match the `region` or `zone` in
|
Note, the region of the subnetwork must match the `region` or `zone` in
|
||||||
|
|
Loading…
Reference in New Issue