зеркало из https://github.com/microsoft/azure-cli.git
Fix: Ensure known clouds are always in cloud config (#2029)
* Ensure known clouds are always in cloud config * Fix failing test * Add comment
This commit is contained in:
Родитель
d6bf96d38a
Коммит
71995260f0
|
@ -209,11 +209,20 @@ def get_custom_clouds():
|
|||
return [c for c in get_clouds() if c.name not in known_cloud_names]
|
||||
|
||||
|
||||
def get_clouds():
|
||||
if not os.path.isfile(CLOUD_CONFIG_FILE):
|
||||
for c in KNOWN_CLOUDS:
|
||||
def _init_known_clouds():
|
||||
config = configparser.SafeConfigParser()
|
||||
config.read(CLOUD_CONFIG_FILE)
|
||||
stored_cloud_names = config.sections()
|
||||
for c in KNOWN_CLOUDS:
|
||||
if c.name not in stored_cloud_names:
|
||||
_save_cloud(c)
|
||||
|
||||
|
||||
def get_clouds():
|
||||
# ensure the known clouds are always in cloud config
|
||||
_init_known_clouds()
|
||||
clouds = []
|
||||
# load the config again as it may have changed
|
||||
config = configparser.SafeConfigParser()
|
||||
config.read(CLOUD_CONFIG_FILE)
|
||||
for section in config.sections():
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
import tempfile
|
||||
import unittest
|
||||
import mock
|
||||
from six.moves import configparser
|
||||
|
||||
from azure.cli.core.cloud import (Cloud,
|
||||
CloudEndpoints,
|
||||
|
@ -29,22 +30,25 @@ class TestCloud(unittest.TestCase):
|
|||
|
||||
@mock.patch('azure.cli.core.cloud.get_custom_clouds', lambda: [])
|
||||
def test_add_get_delete_custom_cloud(self):
|
||||
endpoints = CloudEndpoints(management='http://management.contoso.com')
|
||||
suffixes = CloudSuffixes(storage_endpoint='core.contoso.com')
|
||||
endpoint_rm = 'http://management.contoso.com'
|
||||
suffix_storage = 'core.contoso.com'
|
||||
endpoints = CloudEndpoints(resource_manager=endpoint_rm)
|
||||
suffixes = CloudSuffixes(storage_endpoint=suffix_storage)
|
||||
c = Cloud('MyOwnCloud', endpoints=endpoints, suffixes=suffixes)
|
||||
expected_config_file_result = '[MyOwnCloud]\nendpoint_management = ' \
|
||||
'http://management.contoso.com\nsuffix_storage_endpoint = ' \
|
||||
'core.contoso.com\n\n'
|
||||
with mock.patch('azure.cli.core.cloud.CLOUD_CONFIG_FILE', tempfile.mkstemp()[1]) as\
|
||||
config_file:
|
||||
with mock.patch('azure.cli.core.cloud.get_custom_clouds', lambda: []):
|
||||
add_cloud(c)
|
||||
with open(config_file, 'r') as cf:
|
||||
self.assertEqual(cf.read(), expected_config_file_result)
|
||||
config = configparser.SafeConfigParser()
|
||||
config.read(config_file)
|
||||
self.assertTrue(c.name in config.sections())
|
||||
self.assertEqual(config.get(c.name, 'endpoint_resource_manager'), endpoint_rm)
|
||||
self.assertEqual(config.get(c.name, 'suffix_storage_endpoint'), suffix_storage)
|
||||
custom_clouds = get_custom_clouds()
|
||||
self.assertEqual(len(custom_clouds), 1)
|
||||
self.assertEqual(custom_clouds[0].name, c.name)
|
||||
self.assertEqual(custom_clouds[0].endpoints.management, c.endpoints.management)
|
||||
self.assertEqual(custom_clouds[0].endpoints.resource_manager,
|
||||
c.endpoints.resource_manager)
|
||||
self.assertEqual(custom_clouds[0].suffixes.storage_endpoint,
|
||||
c.suffixes.storage_endpoint)
|
||||
with mock.patch('azure.cli.core.cloud._get_cloud', lambda _: c):
|
||||
|
|
Загрузка…
Ссылка в новой задаче