Skip to content

Commit 7f167b4

Browse files
author
Stanislav Idolov
authored
ENGCOM-2646: MAGETWO-84608: Cannot perform setup:install if Redis needs a password… #17078
2 parents c753ec6 + e1557d0 commit 7f167b4

File tree

4 files changed

+56
-10
lines changed

4 files changed

+56
-10
lines changed

setup/src/Magento/Setup/Model/ConfigOptionsList/Cache.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,22 @@ class Cache implements ConfigOptionsListInterface
2626
const INPUT_KEY_CACHE_BACKEND_REDIS_SERVER = 'cache-backend-redis-server';
2727
const INPUT_KEY_CACHE_BACKEND_REDIS_DATABASE = 'cache-backend-redis-db';
2828
const INPUT_KEY_CACHE_BACKEND_REDIS_PORT = 'cache-backend-redis-port';
29+
const INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD = 'cache-backend-redis-password';
2930

3031
const CONFIG_PATH_CACHE_BACKEND = 'cache/frontend/default/backend';
3132
const CONFIG_PATH_CACHE_BACKEND_SERVER = 'cache/frontend/default/backend_options/server';
3233
const CONFIG_PATH_CACHE_BACKEND_DATABASE = 'cache/frontend/default/backend_options/database';
3334
const CONFIG_PATH_CACHE_BACKEND_PORT = 'cache/frontend/default/backend_options/port';
35+
const CONFIG_PATH_CACHE_BACKEND_PASSWORD = 'cache/frontend/default/backend_options/password';
3436

3537
/**
3638
* @var array
3739
*/
3840
private $defaultConfigValues = [
3941
self::INPUT_KEY_CACHE_BACKEND_REDIS_SERVER => '127.0.0.1',
4042
self::INPUT_KEY_CACHE_BACKEND_REDIS_DATABASE => '0',
41-
self::INPUT_KEY_CACHE_BACKEND_REDIS_PORT => '6379'
43+
self::INPUT_KEY_CACHE_BACKEND_REDIS_PORT => '6379',
44+
self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD => ''
4245
];
4346

4447
/**
@@ -55,6 +58,7 @@ class Cache implements ConfigOptionsListInterface
5558
self::INPUT_KEY_CACHE_BACKEND_REDIS_SERVER => self::CONFIG_PATH_CACHE_BACKEND_SERVER,
5659
self::INPUT_KEY_CACHE_BACKEND_REDIS_DATABASE => self::CONFIG_PATH_CACHE_BACKEND_DATABASE,
5760
self::INPUT_KEY_CACHE_BACKEND_REDIS_PORT => self::CONFIG_PATH_CACHE_BACKEND_PORT,
61+
self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD => self::CONFIG_PATH_CACHE_BACKEND_PASSWORD
5862
];
5963

6064
/**
@@ -102,6 +106,12 @@ public function getOptions()
102106
TextConfigOption::FRONTEND_WIZARD_TEXT,
103107
self::CONFIG_PATH_CACHE_BACKEND_PORT,
104108
'Redis server listen port'
109+
),
110+
new TextConfigOption(
111+
self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD,
112+
TextConfigOption::FRONTEND_WIZARD_TEXT,
113+
self::CONFIG_PATH_CACHE_BACKEND_PASSWORD,
114+
'Redis server password'
105115
)
106116
];
107117
}
@@ -190,6 +200,13 @@ private function validateRedisConfig(array $options, DeploymentConfig $deploymen
190200
self::CONFIG_PATH_CACHE_BACKEND_DATABASE,
191201
$this->getDefaultConfigValue(self::INPUT_KEY_CACHE_BACKEND_REDIS_DATABASE)
192202
);
203+
204+
$config['password'] = isset($options[self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD])
205+
? $options[self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD]
206+
: $deploymentConfig->get(
207+
self::CONFIG_PATH_CACHE_BACKEND_PASSWORD,
208+
$this->getDefaultConfigValue(self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD)
209+
);
193210

194211
return $this->redisValidator->isValidConnection($config);
195212
}

setup/src/Magento/Setup/Model/ConfigOptionsList/PageCache.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ class PageCache implements ConfigOptionsListInterface
2727
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_DATABASE = 'page-cache-redis-db';
2828
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PORT = 'page-cache-redis-port';
2929
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA = 'page-cache-redis-compress-data';
30+
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD = 'page-cache-redis-password';
3031

3132
const CONFIG_PATH_PAGE_CACHE_BACKEND = 'cache/frontend/page_cache/backend';
3233
const CONFIG_PATH_PAGE_CACHE_BACKEND_SERVER = 'cache/frontend/page_cache/backend_options/server';
3334
const CONFIG_PATH_PAGE_CACHE_BACKEND_DATABASE = 'cache/frontend/page_cache/backend_options/database';
3435
const CONFIG_PATH_PAGE_CACHE_BACKEND_PORT = 'cache/frontend/page_cache/backend_options/port';
3536
const CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA = 'cache/frontend/page_cache/backend_options/compress_data';
37+
const CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD = 'cache/frontend/page_cache/backend_options/password';
3638

3739
/**
3840
* @var array
@@ -41,7 +43,8 @@ class PageCache implements ConfigOptionsListInterface
4143
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_SERVER => '127.0.0.1',
4244
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_DATABASE => '1',
4345
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PORT => '6379',
44-
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA => '0'
46+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA => '0',
47+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD => ''
4548
];
4649

4750
/**
@@ -58,7 +61,8 @@ class PageCache implements ConfigOptionsListInterface
5861
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_SERVER => self::CONFIG_PATH_PAGE_CACHE_BACKEND_SERVER,
5962
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_DATABASE => self::CONFIG_PATH_PAGE_CACHE_BACKEND_DATABASE,
6063
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PORT => self::CONFIG_PATH_PAGE_CACHE_BACKEND_PORT,
61-
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA => self::CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA
64+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA => self::CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA,
65+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD => self::CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD
6266
];
6367

6468
/**
@@ -112,6 +116,12 @@ public function getOptions()
112116
TextConfigOption::FRONTEND_WIZARD_TEXT,
113117
self::CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA,
114118
'Set to 1 to compress the full page cache (use 0 to disable)'
119+
),
120+
new TextConfigOption(
121+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD,
122+
TextConfigOption::FRONTEND_WIZARD_TEXT,
123+
self::CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD,
124+
'Redis server password'
115125
)
116126
];
117127
}
@@ -201,6 +211,13 @@ private function validateRedisConfig(array $options, DeploymentConfig $deploymen
201211
self::CONFIG_PATH_PAGE_CACHE_BACKEND_DATABASE,
202212
$this->getDefaultConfigValue(self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_DATABASE)
203213
);
214+
215+
$config['password'] = isset($options[self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD])
216+
? $options[self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD]
217+
: $deploymentConfig->get(
218+
self::CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD,
219+
$this->getDefaultConfigValue(self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD)
220+
);
204221

205222
return $this->redisValidator->isValidConnection($config);
206223
}

setup/src/Magento/Setup/Test/Unit/Model/ConfigOptionsList/CacheTest.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ protected function setUp()
3939
public function testGetOptions()
4040
{
4141
$options = $this->configOptionsList->getOptions();
42-
$this->assertCount(4, $options);
42+
$this->assertCount(5, $options);
4343

4444
$this->assertArrayHasKey(0, $options);
4545
$this->assertInstanceOf(SelectConfigOption::class, $options[0]);
@@ -56,6 +56,10 @@ public function testGetOptions()
5656
$this->assertArrayHasKey(3, $options);
5757
$this->assertInstanceOf(TextConfigOption::class, $options[3]);
5858
$this->assertEquals('cache-backend-redis-port', $options[3]->getName());
59+
60+
$this->assertArrayHasKey(4, $options);
61+
$this->assertInstanceOf(TextConfigOption::class, $options[4]);
62+
$this->assertEquals('cache-backend-redis-password', $options[4]->getName());
5963
}
6064

6165
public function testCreateConfigCacheRedis()
@@ -70,7 +74,8 @@ public function testCreateConfigCacheRedis()
7074
'backend_options' => [
7175
'server' => '',
7276
'port' => '',
73-
'database' => ''
77+
'database' => '',
78+
'password' => ''
7479
]
7580
]
7681
]
@@ -92,7 +97,8 @@ public function testCreateConfigWithRedisConfig()
9297
'backend_options' => [
9398
'server' => 'localhost',
9499
'port' => '1234',
95-
'database' => '5'
100+
'database' => '5',
101+
'password' => ''
96102
]
97103
]
98104
]
@@ -118,7 +124,7 @@ public function testValidateWithValidInput()
118124
];
119125
$this->validatorMock->expects($this->once())
120126
->method('isValidConnection')
121-
->with(['host'=>'localhost', 'db'=>'', 'port'=>''])
127+
->with(['host'=>'localhost', 'db'=>'', 'port'=>'', 'password'=> ''])
122128
->willReturn(true);
123129

124130
$errors = $this->configOptionsList->validate($options, $this->deploymentConfigMock);

setup/src/Magento/Setup/Test/Unit/Model/ConfigOptionsList/PageCacheTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ protected function setUp()
3939
public function testGetOptions()
4040
{
4141
$options = $this->configList->getOptions();
42-
$this->assertCount(5, $options);
42+
$this->assertCount(6, $options);
4343

4444
$this->assertArrayHasKey(0, $options);
4545
$this->assertInstanceOf(SelectConfigOption::class, $options[0]);
@@ -60,6 +60,10 @@ public function testGetOptions()
6060
$this->assertArrayHasKey(4, $options);
6161
$this->assertInstanceOf(TextConfigOption::class, $options[4]);
6262
$this->assertEquals('page-cache-redis-compress-data', $options[4]->getName());
63+
64+
$this->assertArrayHasKey(5, $options);
65+
$this->assertInstanceOf(TextConfigOption::class, $options[5]);
66+
$this->assertEquals('page-cache-redis-password', $options[5]->getName());
6367
}
6468

6569
public function testCreateConfigWithRedis()
@@ -75,7 +79,8 @@ public function testCreateConfigWithRedis()
7579
'server'=> '',
7680
'port' => '',
7781
'database' => '',
78-
'compress_data' => ''
82+
'compress_data' => '',
83+
'password' => ''
7984
]
8085
]
8186
]
@@ -98,7 +103,8 @@ public function testCreateConfigWithRedisConfiguration()
98103
'server' => 'foo.bar',
99104
'port' => '9000',
100105
'database' => '6',
101-
'compress_data' => '1'
106+
'compress_data' => '1',
107+
'password' => ''
102108
]
103109
]
104110
]

0 commit comments

Comments
 (0)