Skip to content

Commit

Permalink
updated createTemplateInstance to consider configured IT metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
mohsenrezaeithe committed Sep 13, 2019
1 parent d5eb177 commit 633e61e
Showing 1 changed file with 36 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -159,15 +159,27 @@ class GoogleApiConnectorImpl : GoogleApiConnector {
val details = instance.image.imageDetails
val zone = details.zone

val instanceInfo = getInstanceBuilder(instance)
.setMetadata(getMetadata(mutableMapOf(
val instanceTemplateBuilder = getInstanceTemplate(instance).toBuilder()
LOG.info("GCP Instance Template: $instanceTemplateBuilder")
LOG.info("Instance Template properties captured from GCP: ${instanceTemplateBuilder.getProperties().toBuilder()}")
val instanceTemplateMetadataBuilder = instanceTemplateBuilder
.getProperties()
.toBuilder()
.getMetadata()
.toBuilder()
.addAllItems(getMetadata(mutableMapOf(
GoogleConstants.TAG_SERVER to myServerId,
GoogleConstants.TAG_DATA to userData.serialize(),
GoogleConstants.TAG_PROFILE to myProfileId,
GoogleConstants.TAG_SOURCE to details.sourceId
)))
))?.getItemsList())

LOG.info("Creating an instance builder from merged metadata: $instanceTemplateMetadataBuilder")
val instanceInfo = getInstanceBuilder(instance, true)
.setMetadata(instanceTemplateMetadataBuilder.build())
.build()

LOG.info("Creating instance from Instance Template: ${instanceTemplateBuilder.getName()}")
instanceClient.insertInstanceCallable().futureCall(InsertInstanceHttpRequest.newBuilder()
.setSourceInstanceTemplate(ProjectGlobalInstanceTemplateName.of(details.instanceTemplate, myProjectId).value)
.setZone(ProjectZoneName.of(myProjectId, zone).value)
Expand All @@ -178,6 +190,15 @@ class GoogleApiConnectorImpl : GoogleApiConnector {
Unit
}

private fun getInstanceBuilder(instance: GoogleCloudInstance, fromTemplate: Boolean): Instance.Builder {

if (fromTemplate)
return Instance.newBuilder()
.setName(instance.instanceId)

return getInstanceBuilder(instance)
}

private fun getInstanceBuilder(instance: GoogleCloudInstance): Instance.Builder {
return Instance.newBuilder()
.setName(instance.instanceId)
Expand All @@ -188,6 +209,18 @@ class GoogleApiConnectorImpl : GoogleApiConnector {
.build())
}

private fun getInstanceTemplate(instance: GoogleCloudInstance): InstanceTemplate {
LOG.info("getInstanceTemplate template name: ${instance.image.imageDetails.instanceTemplate}")
LOG.info("getInstanceTemplate GCP project ID: $myProjectId")
val instanceTemplateName = ProjectGlobalInstanceTemplateName.of(
instance.image.imageDetails.instanceTemplate,
myProjectId
)

LOG.info("GCP get Instance Template: $instanceTemplateName")
return instanceTemplateClient.getInstanceTemplate(instanceTemplateName.toString())
}

private fun getMetadata(metadata: Map<String, String?>): Metadata? {
return Metadata.newBuilder()
.addAllItems(metadata.map {
Expand Down

0 comments on commit 633e61e

Please sign in to comment.