Skip to content

Commit

Permalink
Fix user name extraction from Yandex Cloud
Browse files Browse the repository at this point in the history
  • Loading branch information
jorikfon committed May 8, 2024
1 parent c04ce37 commit 14709f4
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions src/Core/System/CloudProvisioning/YandexCloud.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,13 @@ public function provision(): bool

SystemMessages::echoToTeletype(PHP_EOL);

// Extract username from user-data
$userData = $data['attributes']['user-data'] ?? '';
$username = $this->extractUserNameFromUserData($userData);
$sshKeys = $metadata['attributes']['ssh-keys']??'';

// Extract username
$username = $this->extractUserNameFromSshKeys($sshKeys);

// Update SSH keys, if available
$this->updateSSHKeys($metadata['attributes']['ssh-keys'] ?? '');
$this->updateSSHKeys($sshKeys);

// Update machine name
$hostname = $metadata['name'] ?? '';
Expand Down Expand Up @@ -105,13 +106,15 @@ private function retrieveInstanceMetadata(): ?array
/**
* Extracts the username from user-data script.
*
* @param string $userData Cloud-init user data string.
* @param string $sshKeys SSH keys sting.
* @return string|null Extracted username or null if not found.
*/
private function extractUserNameFromUserData(string $userData): ?string
private function extractUserNameFromSshKeys(string $sshKeys): ?string
{
if (preg_match('/^\s*-\s*name:\s*(\w+)/m', $userData, $matches)) {
return $matches[1]; // Returns the first username found
$parts = explode(':', $sshKeys);
$username = $parts[0];
if (strlen($username) >= 3) {
return $username;
}
return null; // Return null if no username found
}
Expand Down

0 comments on commit 14709f4

Please sign in to comment.