Handle endpoint_type attribute

Change-Id: Ie7a419146f71cb480433062b480036311f14b042
This commit is contained in:
Sebastien DOIDO 2015-07-27 18:13:50 +02:00 committed by Sebastien Doido
parent 4a4301c68b
commit e1d8cb6576
4 changed files with 42 additions and 23 deletions

View File

@ -59,6 +59,10 @@ def main(args=None):
"server's certificate will not be verified "
"against any certificate authorities. This "
"option should be used with caution.")
parser.add_argument("--endpoint_type", type=str,
default=os.environ.get("OS_ENDPOINT_TYPE",
"publicURL"),
help="Defaults to env[OS_ENDPOINT_TYPE] or publicURL")
parser.add_argument('--exclude-servers', action='store_true',
default=False,
help="Do not export in template server resources")
@ -73,7 +77,8 @@ def main(args=None):
args = parser.parse_args()
template = flame.TemplateGenerator(args.username, args.password,
args.project, args.auth_url,
args.insecure, region_name=args.region)
args.insecure, args.endpoint_type,
region_name=args.region)
template.extract_vm_details(args.exclude_servers, args.exclude_volumes,
args.generate_stack_data)
template.extract_data()

View File

@ -105,11 +105,11 @@ class Resource(object):
class TemplateGenerator(object):
def __init__(self, username, password, tenant_name, auth_url, insecure,
region_name=None):
endpoint_type, region_name=None):
self.generate_data = False
self._setup_templates()
self._setup_managers(username, password, tenant_name, auth_url,
insecure, region_name=region_name)
insecure, endpoint_type, region_name=region_name)
def _setup_templates(self):
self.template = yaml.load(template_skeleton)
@ -120,15 +120,18 @@ class TemplateGenerator(object):
self.stack_data['resources'] = {}
def _setup_managers(self, username, password, tenant_name, auth_url,
insecure, region_name=None):
insecure, endpoint_type, region_name=None):
self.neutron = managers.NeutronManager(username, password, tenant_name,
auth_url, insecure,
endpoint_type,
region_name=region_name)
self.nova = managers.NovaManager(username, password, tenant_name,
auth_url, insecure,
endpoint_type,
region_name=region_name)
self.cinder = managers.CinderManager(username, password, tenant_name,
auth_url, insecure,
endpoint_type,
region_name=region_name)
def extract_vm_details(self, exclude_servers, exclude_volumes,

View File

@ -35,22 +35,25 @@ class KeystoneManager(object):
_client = None
def __init__(self, username, password, project, auth_url, insecure,
region_name=None):
endpoint_type='publicURL', region_name=None):
self.username = username
self.password = password
self.project = project
self.auth_url = auth_url
self.insecure = insecure
self.region_name = region_name
self.endpoint_type = endpoint_type
def client(self):
if not self._client:
self._client = keystone_client.Client(username=self.username,
password=self.password,
tenant_name=self.project,
auth_url=self.auth_url,
region_name=self.region_name,
insecure=self.insecure)
self._client = keystone_client.Client(
username=self.username,
password=self.password,
tenant_name=self.project,
auth_url=self.auth_url,
region_name=self.region_name,
insecure=self.insecure,
endpoint_type=self.endpoint_type)
return self._client
def set_client(self, client):
@ -72,22 +75,25 @@ class NeutronManager(object):
_project_id = None
def __init__(self, username, password, project, auth_url, insecure,
region_name=None):
endpoint_type='publicURL', region_name=None):
self.username = username
self.password = password
self.project = project
self.auth_url = auth_url
self.insecure = insecure
self.endpoint_type = endpoint_type
self.region_name = region_name
def client(self):
if not self._client:
self._client = neutron_client.Client(username=self.username,
password=self.password,
tenant_name=self.project,
auth_url=self.auth_url,
region_name=self.region_name,
insecure=self.insecure)
self._client = neutron_client.Client(
username=self.username,
password=self.password,
tenant_name=self.project,
auth_url=self.auth_url,
region_name=self.region_name,
insecure=self.insecure,
endpoint_type=self.endpoint_type)
if not self._project_id:
keystone_mgr = KeystoneManager(self.username, self.password,
self.project, self.auth_url,
@ -138,20 +144,22 @@ class NovaManager(object):
_client = None
def __init__(self, username, password, project, auth_url, insecure,
region_name=None):
endpoint_type='publicURL', region_name=None):
self.username = username
self.password = password
self.project = project
self.auth_url = auth_url
self.region_name = region_name
self.insecure = insecure
self.endpoint_type = endpoint_type
def client(self):
if not self._client:
self._client = nova_client.Client(self.username, self.password,
self.project, self.auth_url,
region_name=self.region_name,
insecure=self.insecure)
insecure=self.insecure,
endpoint_type=self.endpoint_type)
return self._client
def set_client(self, client):
@ -184,7 +192,7 @@ class CinderManager(object):
_client = None
def __init__(self, username, password, project, auth_url, insecure,
region_name=None):
endpoint_type='publicURL', region_name=None):
self.username = username
self.password = password
self.project = project
@ -192,6 +200,7 @@ class CinderManager(object):
self.region_name = region_name
self.insecure = insecure
self.defined = True
self.endpoint_type = endpoint_type
def client(self):
if self.defined and not self._client:
@ -200,7 +209,8 @@ class CinderManager(object):
self.project,
self.auth_url,
region_name=self.region_name,
insecure=self.insecure)
insecure=self.insecure,
endpoint_type=self.endpoint_type)
# Check cinder endpoint existence
try:

View File

@ -246,7 +246,8 @@ class BaseTestCase(base.TestCase):
super(BaseTestCase, self).tearDown()
def get_generator(self, exclude_servers, exclude_volumes, generate_data):
generator = flame.TemplateGenerator('x', 'x', 'x', 'x', True)
generator = flame.TemplateGenerator('x', 'x', 'x', 'x', True,
'publicURL')
generator.extract_vm_details(exclude_servers, exclude_volumes,
generate_data)
return generator