1
0
mirror of https://github.com/rancher/os.git synced 2025-08-28 11:12:59 +00:00

Fix issue with depulicate ssh keys after save

The CloudConfig.Save() did not load the metadata resulting in the diff
function always thinking the SSH keys were new.  This would cause them
to be saved over and over again just getting bigger and bigger.
This commit is contained in:
Darren Shepherd 2016-02-04 09:13:20 -07:00
parent 77242012e7
commit ce915927be
2 changed files with 46 additions and 0 deletions

View File

@ -163,6 +163,9 @@ func (c *CloudConfig) Save() error {
if err != nil {
return err
}
exCfg = mergeMetadata(exCfg, readMetadata())
exData := map[interface{}]interface{}{}
if err := util.Convert(exCfg, &exData); err != nil {
return err

View File

@ -0,0 +1,43 @@
import pytest
import rostest.util as u
from rostest.util import SSH
@pytest.fixture(scope="module")
def qemu(request):
q = u.run_qemu(request)
u.flush_out(q.stdout)
return q
def test_ssh_key_merging(qemu):
SSH(qemu).check_call('bash', '-c', '''cat > test-merge << "SCRIPT"
set -x -e
rm /var/lib/rancher/conf/cloud-config.yml
EXISTING=$(ros config get ssh_authorized_keys | head -1)
cat > /var/lib/rancher/conf/metadata << EOF
SSHPublicKeys:
"0": zero
"1": one
"2": two
EOF
ros config set hostname one
ros config set hostname two
ros config set hostname three
cat > expected << EOF
$EXISTING
- zero
- one
- two
EOF
ros config get ssh_authorized_keys > got
diff got expected
SCRIPT
sudo bash test-merge
'''.strip())