Module: CemAcpt::Platform::Mixin::Gcp
- Defined in:
- lib/cem_acpt/platform/gcp.rb
Instance Method Summary collapse
- #gcp_credentials_file ⇒ Object
- #gcp_disk_size ⇒ Object
- #gcp_machine_type ⇒ Object
- #gcp_max_run_duration ⇒ Object
- #gcp_private_key ⇒ Object
- #gcp_project ⇒ Object
- #gcp_public_key ⇒ Object
- #gcp_region ⇒ Object
- #gcp_subnetwork ⇒ Object
- #gcp_username ⇒ Object
- #gcp_zone ⇒ Object
- #node_data ⇒ Object
- #platform_data ⇒ Object
Instance Method Details
#gcp_credentials_file ⇒ Object
55 56 57 |
# File 'lib/cem_acpt/platform/gcp.rb', line 55 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_size ⇒ Object
111 112 113 |
# File 'lib/cem_acpt/platform/gcp.rb', line 111 def gcp_disk_size @gcp_disk_size ||= (@config.get('node_data.disk_size') || 40) end |
#gcp_machine_type ⇒ Object
107 108 109 |
# File 'lib/cem_acpt/platform/gcp.rb', line 107 def gcp_machine_type @gcp_machine_type ||= (@config.get('node_data.machine_type') || 'e2-medium') end |
#gcp_max_run_duration ⇒ Object
115 116 117 |
# File 'lib/cem_acpt/platform/gcp.rb', line 115 def gcp_max_run_duration @gcp_max_run_duration ||= (@config.get('node_data.max_run_duration') || 3600) end |
#gcp_private_key ⇒ Object
99 100 101 |
# File 'lib/cem_acpt/platform/gcp.rb', line 99 def gcp_private_key @gcp_private_key ||= (@run_data[:private_key] || File.join(Dir.home, '.ssh', 'google_compute_engine')) end |
#gcp_project ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/cem_acpt/platform/gcp.rb', line 59 def gcp_project return @gcp_project if @gcp_project configured = @config.get('platform.project') return @gcp_project = configured if configured stdout, stderr, status = Open3.capture3('gcloud config get-value project') raise "gcloud config get-value project failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? @gcp_project = stdout.chomp end |
#gcp_public_key ⇒ Object
103 104 105 |
# File 'lib/cem_acpt/platform/gcp.rb', line 103 def gcp_public_key @gcp_public_key ||= (@run_data[:public_key] || File.join(Dir.home, '.ssh', 'google_compute_engine.pub')) end |
#gcp_region ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/cem_acpt/platform/gcp.rb', line 71 def gcp_region return @gcp_region if @gcp_region configured = @config.get('platform.region') return @gcp_region = configured if configured stdout, stderr, status = Open3.capture3('gcloud config get-value compute/region') raise "gcloud config get-value compute/region failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? @gcp_region = stdout.chomp end |
#gcp_subnetwork ⇒ Object
95 96 97 |
# File 'lib/cem_acpt/platform/gcp.rb', line 95 def gcp_subnetwork @gcp_subnetwork ||= (@config.get('platform.subnetwork') || 'default') end |
#gcp_username ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/cem_acpt/platform/gcp.rb', line 34 def gcp_username return @gcp_username if @gcp_username @gcp_username = @config.get('platform.username') return @gcp_username if @gcp_username stdout, stderr, status = Open3.capture3('gcloud compute os-login describe-profile --format json') raise "gcloud os-login describe-profile failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? parsed = JSON.parse(stdout) accounts = parsed['posixAccounts'] raise "gcloud os-login profile returned no posixAccounts. stderr: #{stderr.chomp}" if accounts.nil? || accounts.empty? username = accounts.first['username'] raise "gcloud os-login posixAccounts entry has no username. stdout: #{stdout.chomp}" unless username @gcp_username = username rescue JSON::ParserError => e raise "Failed to parse gcloud os-login output: #{e.}. stdout: #{stdout.chomp}" end |
#gcp_zone ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/cem_acpt/platform/gcp.rb', line 83 def gcp_zone return @gcp_zone if @gcp_zone configured = @config.get('platform.zone') return @gcp_zone = configured if configured stdout, stderr, status = Open3.capture3('gcloud config get-value compute/zone') raise "gcloud config get-value compute/zone failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? @gcp_zone = stdout.chomp end |
#node_data ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/cem_acpt/platform/gcp.rb', line 24 def node_data nd = {} nd[:machine_type] = gcp_machine_type nd[:disk_size] = gcp_disk_size nd[:max_run_duration] = gcp_max_run_duration nd[:image] = image_name if image_name nd[:test_name] = @test_data[:test_name] if @test_data&.key?(:test_name) nd end |
#platform_data ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/cem_acpt/platform/gcp.rb', line 11 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 |