Support region

Change-Id: If098871550f1de130a8112fcbca0a088a8fffc9c
This commit is contained in:
cedric.brandily 2014-11-06 20:26:18 +01:00 committed by Cedric Brandily
parent ca3f5b8dcc
commit b81bfb81bd
3 changed files with 33 additions and 12 deletions

View File

@ -45,6 +45,10 @@ def main(args=None):
default=os.environ.get("OS_TENANT_NAME"),
help="Name of project. "
"Defaults to env[OS_TENANT_NAME]")
parser.add_argument("--region",
default=os.environ.get("OS_REGION_NAME"),
help="Name of region. "
"Defaults to env[OS_REGION_NAME]")
parser.add_argument("--auth_url", type=str,
default=os.environ.get("OS_AUTH_URL"),
help="Authentication URL. "
@ -69,7 +73,7 @@ def main(args=None):
args = parser.parse_args()
template = flame.TemplateGenerator(args.username, args.password,
args.project, args.auth_url,
args.insecure)
args.insecure, region_name=args.region)
template.extract_vm_details(args.exclude_servers, args.exclude_volumes,
args.generate_stack_data)
template.extract_data()

View File

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

View File

@ -32,12 +32,14 @@ class KeystoneManager(object):
"""Manages Keystone queries."""
_client = None
def __init__(self, username, password, project, auth_url, insecure):
def __init__(self, username, password, project, auth_url, insecure,
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
def client(self):
if not self._client:
@ -45,6 +47,7 @@ class KeystoneManager(object):
password=self.password,
tenant_name=self.project,
auth_url=self.auth_url,
region_name=self.region_name,
insecure=self.insecure)
return self._client
@ -66,12 +69,14 @@ class NeutronManager(object):
_client = None
_project_id = None
def __init__(self, username, password, project, auth_url, insecure):
def __init__(self, username, password, project, auth_url, insecure,
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
def client(self):
if not self._client:
@ -79,11 +84,13 @@ class NeutronManager(object):
password=self.password,
tenant_name=self.project,
auth_url=self.auth_url,
region_name=self.region_name,
insecure=self.insecure)
if not self._project_id:
keystone_mgr = KeystoneManager(self.username, self.password,
self.project, self.auth_url,
self.insecure)
self.insecure,
region_name=self.region_name)
self._project_id = keystone_mgr.get_project_id()
return self._client
@ -128,17 +135,20 @@ class NovaManager(object):
"""Manage nova resources."""
_client = None
def __init__(self, username, password, project, auth_url, insecure):
def __init__(self, username, password, project, auth_url, insecure,
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
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)
return self._client
@ -171,11 +181,13 @@ class CinderManager(object):
"""Manage Cinder resources."""
_client = None
def __init__(self, username, password, project, auth_url, insecure):
def __init__(self, username, password, project, auth_url, insecure,
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
def client(self):
@ -184,6 +196,7 @@ class CinderManager(object):
self.password,
self.project,
self.auth_url,
region_name=self.region_name,
insecure=self.insecure)
return self._client