Split keystone away from heat collector

This will help segregate the changes as we abstract away details of
keystone such as caching the tokens.

Change-Id: I81ccb17658e5c9fa349fb183240f901d61b1fa93
Related-Bug: #1321437
This commit is contained in:
Clint Byrum 2014-05-20 12:47:25 -07:00 committed by Chris Jones
parent 308aeb19db
commit 1dc89292dc
2 changed files with 45 additions and 2 deletions

View File

@ -18,6 +18,7 @@ from oslo.config import cfg
from openstack.common import log
from os_collect_config import exc
from os_collect_config import keystone
CONF = cfg.CONF
logger = log.getLogger(__name__)
@ -67,11 +68,12 @@ class Collector(object):
raise exc.HeatMetadataNotConfigured
try:
ks = self.keystoneclient.Client(
ks = keystone.Keystone(
auth_url=CONF.heat.auth_url,
user_id=CONF.heat.user_id,
password=CONF.heat.password,
project_id=CONF.heat.project_id)
project_id=CONF.heat.project_id,
keystoneclient=self.keystoneclient).client
endpoint = ks.service_catalog.url_for(
service_type='orchestration', endpoint_type='publicURL')
logger.debug('Fetching metadata from %s' % endpoint)

View File

@ -0,0 +1,41 @@
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from keystoneclient.v3 import client as ks_keystoneclient
class Keystone(object):
'''A keystone wrapper class.
This wrapper is used to encapsulate any keystone related operations
os-collect-config may need to perform. Eventually this will be used
to implement memoization to reuse auth references stored on disk.
'''
def __init__(self, auth_url, user_id, password, project_id,
keystoneclient=None):
'''Initialize Keystone wrapper.
@param string auth_url auth_url for keystoneclient
@param string user_id user_id for keystoneclient
@param string project_id project_id for keystoneclient
@param object keystoneclient optional keystoneclient implementation.
Uses keystoneclient.v3 if unspecified.
'''
if not keystoneclient:
keystoneclient = ks_keystoneclient
self.client = keystoneclient.Client(
auth_url=auth_url,
user_id=user_id,
password=password,
project_id=project_id)