Merge "Send keystoneauth a better user-agent string"
This commit is contained in:
		@@ -20,7 +20,9 @@ from six.moves.urllib import parse
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from keystoneauth1 import session as _session
 | 
					from keystoneauth1 import session as _session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import openstack
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DEFAULT_USER_AGENT = "openstacksdk/%s" % openstack.__version__
 | 
				
			||||||
VERSION_PATTERN = re.compile('/v\d[\d.]*')
 | 
					VERSION_PATTERN = re.compile('/v\d[\d.]*')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,16 +42,27 @@ def parse_url(filt, url):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class Session(_session.Session):
 | 
					class Session(_session.Session):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, profile, **kwargs):
 | 
					    def __init__(self, profile, user_agent=None, **kwargs):
 | 
				
			||||||
        """Create a new Keystone auth session with a profile.
 | 
					        """Create a new Keystone auth session with a profile.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :param profile: If the user has any special profiles such as the
 | 
					        :param profile: If the user has any special profiles such as the
 | 
				
			||||||
            service name, region, version or interface, they may be provided
 | 
					            service name, region, version or interface, they may be provided
 | 
				
			||||||
            in the profile object.  If no profiles are provided, the
 | 
					            in the profile object.  If no profiles are provided, the
 | 
				
			||||||
            services that appear first in the service catalog will be used.
 | 
					            services that appear first in the service catalog will be used.
 | 
				
			||||||
 | 
					        :param user_agent: A User-Agent header string to use for the
 | 
				
			||||||
 | 
					                           request. If not provided, a default of
 | 
				
			||||||
 | 
					                           :attr:`~openstack.session.DEFAULT_USER_AGENT`
 | 
				
			||||||
 | 
					                           is used, which contains the openstacksdk version
 | 
				
			||||||
 | 
					                           When a non-None value is passed, it will be
 | 
				
			||||||
 | 
					                           prepended to the default.
 | 
				
			||||||
        :type profile: :class:`~openstack.profile.Profile`
 | 
					        :type profile: :class:`~openstack.profile.Profile`
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        super(Session, self).__init__(**kwargs)
 | 
					        if user_agent is not None:
 | 
				
			||||||
 | 
					            self.user_agent = "%s %s" % (user_agent, DEFAULT_USER_AGENT)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self.user_agent = DEFAULT_USER_AGENT
 | 
				
			||||||
 | 
					        super(Session, self).__init__(user_agent=self.user_agent, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.profile = profile
 | 
					        self.profile = profile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_endpoint(self, auth=None, interface=None, **kwargs):
 | 
					    def get_endpoint(self, auth=None, interface=None, **kwargs):
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,3 +33,11 @@ class TestSession(testtools.TestCase):
 | 
				
			|||||||
        self.assertEqual(
 | 
					        self.assertEqual(
 | 
				
			||||||
            "http://127.0.0.1:9292/wot/v1/mytenant",
 | 
					            "http://127.0.0.1:9292/wot/v1/mytenant",
 | 
				
			||||||
            session.parse_url(filt, "http://127.0.0.1:9292/wot/v2.0/mytenant"))
 | 
					            session.parse_url(filt, "http://127.0.0.1:9292/wot/v2.0/mytenant"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_user_agent_none(self):
 | 
				
			||||||
 | 
					        sot = session.Session(None)
 | 
				
			||||||
 | 
					        self.assertTrue(sot.user_agent.startswith("openstacksdk"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_user_agent_set(self):
 | 
				
			||||||
 | 
					        sot = session.Session(None, user_agent="testing/123")
 | 
				
			||||||
 | 
					        self.assertTrue(sot.user_agent.startswith("testing/123 openstacksdk"))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user