Module: Platform

Defined in:
lib/cem_acpt/platform/gcp.rb

Overview

GCP platform implementation

Instance Method Summary collapse

Instance Method Details

#gcp_credentials_fileObject



36
37
38
# File 'lib/cem_acpt/platform/gcp.rb', line 36

def gcp_credentials_file
  @gcp_credentials_file ||= (@config.get('platform.credentials_file') || File.join(Dir.home, '.config', 'gcloud', 'application_default_credentials.json'))
end

#gcp_disk_sizeObject



68
69
70
# File 'lib/cem_acpt/platform/gcp.rb', line 68

def gcp_disk_size
  @gcp_disk_size ||= (@config.get('node_data.disk_size') || 40)
end

#gcp_machine_typeObject



64
65
66
# File 'lib/cem_acpt/platform/gcp.rb', line 64

def gcp_machine_type
  @gcp_machine_type ||= (@config.get('node_data.machine_type') || 'e2-small')
end

#gcp_private_keyObject



56
57
58
# File 'lib/cem_acpt/platform/gcp.rb', line 56

def gcp_private_key
  @gcp_private_key ||= (@test_data[:private_key] || File.join(Dir.home, '.ssh', 'google_compute_engine'))
end

#gcp_projectObject



40
41
42
# File 'lib/cem_acpt/platform/gcp.rb', line 40

def gcp_project
  @gcp_project ||= (@config.get('platform.project') || `gcloud config get-value project`.chomp)
end

#gcp_public_keyObject



60
61
62
# File 'lib/cem_acpt/platform/gcp.rb', line 60

def gcp_public_key
  @gcp_public_key ||= (@test_data[:public_key] || File.join(Dir.home, '.ssh', 'google_compute_engine.pub'))
end

#gcp_regionObject



44
45
46
# File 'lib/cem_acpt/platform/gcp.rb', line 44

def gcp_region
  @gcp_region ||= (@config.get('platform.region') || `gcloud config get-value compute/region`.chomp)
end

#gcp_subnetworkObject



52
53
54
# File 'lib/cem_acpt/platform/gcp.rb', line 52

def gcp_subnetwork
  @gcp_subnetwork ||= (@config.get('platform.subnetwork') || 'default')
end

#gcp_usernameObject



29
30
31
32
33
34
# File 'lib/cem_acpt/platform/gcp.rb', line 29

def gcp_username
  return @gcp_username if @gcp_username

  @gcp_username = @config.get('platform.username')
  @gcp_username ||= JSON.parse(`gcloud compute os-login describe-profile --format json`.chomp)['posixAccounts'].first['username']
end

#gcp_zoneObject



48
49
50
# File 'lib/cem_acpt/platform/gcp.rb', line 48

def gcp_zone
  @gcp_zone ||= (@config.get('platform.zone') || `gcloud config get-value compute/zone`.chomp)
end

#node_dataObject



20
21
22
23
24
25
26
27
# File 'lib/cem_acpt/platform/gcp.rb', line 20

def node_data
  {
    machine_type: gcp_machine_type,
    image: image_name,
    disk_size: gcp_disk_size,
    test_name: @test_data[:test_name],
  }
end

#platform_dataObject



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/cem_acpt/platform/gcp.rb', line 7

def platform_data
  {
    username: gcp_username,
    credentials_file: gcp_credentials_file,
    project: gcp_project,
    region: gcp_region,
    zone: gcp_zone,
    subnetwork: gcp_subnetwork,
    private_key: gcp_private_key,
    public_key: gcp_public_key,
  }
end