Skip to content

[Compute] Inconsistency while using ResourceName.of() helpers #4416

Description

@dtretyakov
  • google-cloud-java version: 0.79-alpha

Steps to reproduce

The recent changes linked to #3604 have caused that Compute SDK usage has become more complicated. Let take a look on the following examples.

Code snippet

Before:

val machineType =ProjectZoneMachineTypeName.of(machineType, myProjectId, zone).toString()
val instance =Instance.newBuilder().setMachineType(machineType).build()
instanceClient.insertInstance(instance)

After #3604ResourceName.toString() methods does not append projects/ prefix anymore and as result the previous code fragment fails with exceptions like that because they're required by REST APIs:

Causedby: com.google.api.client.http.HttpResponseException: 400BadRequest
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid value for field 'resource.machineType': 'project-123/zones/europe-west3-b/machineTypes/n1-standard-1'. The URL is malformed."
},
{
"domain": "global",
"reason": "invalid",
"message": "Invalid value for field 'resource.disks[0].initializeParams.sourceImage': 'project-123/global/images/image-name'. The URL is malformed."
}
],
"code": 400,
"message": "Invalid value for field 'resource.machineType': 'project-123/zones/europe-west3-b/machineTypes/n1-standard-1'. The URL is malformed."
}
}

To resolve it for each ResourceName should be added ResourceName.SERVICE_ADDRESS prefix like that:

val machineType =ProjectZoneMachineTypeName.SERVICE_ADDRESS+ProjectZoneMachineTypeName.of(machineType, myProjectId, zone).toString()
val instance =Instance.newBuilder().setMachineType(machineType).build()
instanceClient.insertInstance(instance)

Metadata

Metadata

Assignees

Labels

api: computeIssues related to the Compute Engine API.priority: p1Important issue which blocks shipping the next release. Will be fixed prior to next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions