def __init__(self): """Initializes a _MetricsLogger.""" # Attributes that will be set later and sent with logging HTTP requests. self._client_id = None self._user_agent = None self._runtimes = None self._start_time = None self._environment = None # self._python_version is in the form: major.minor.macro. self._python_version = '.'.join(map(str, sys.version_info[:3])) self._sdk_version = ( sdk_update_checker.GetVersionObject() or {}).get('release') self._is_dev_shell = constants.DEVSHELL_ENV in os.environ self._is_64_bits = sys.maxsize > 2**32 self._platform = platform.platform() self._support_datastore_emulator = None self._datastore_data_type = None self._use_ssl = False self._cmd_args = None self._multi_module = None self._dispatch_config = None self._category = None self._grpc_import_report = None self._java_major_version = None # Stores events for batch logging once Stop has been called. self._log_once_on_stop_events = {}
def _get_source_name(): """Gets the name of this source version. Used for authentication.""" version = sdk_update_checker.GetVersionObject() if version is None: release = 'unknown' else: release = version['release'] return 'Google-appcfg-%s' % release
def test_version_file_missing(self): self.mox.StubOutWithMock(sdk_update_checker, 'GetVersionObject') sdk_update_checker.GetVersionObject().AndReturn(None) self.mox.ReplayAll() self.assertEqual(admin_request_handler._DEFAULT_SDK_VERSION, admin_request_handler._get_sdk_version()) self.mox.VerifyAll()
def test_version_file_missing(self): """If no VERSION file exists, the default SDK version is used.""" self.mox.StubOutWithMock(sdk_update_checker, 'GetVersionObject') sdk_update_checker.GetVersionObject().AndReturn(None) self.mox.ReplayAll() self.assertEqual(util._DEFAULT_SDK_VERSION, util.get_sdk_version()) self.mox.VerifyAll()
def __init__(self): """Initializes a _MetricsLogger.""" self._client_id = None self._user_agent = None self._runtimes = None self._start_time = None # self._python_version is in the form: major.minor.macro. self._python_version = '.'.join(map(str, sys.version_info[:3])) self._sdk_version = (sdk_update_checker.GetVersionObject() or {}).get('release') self._log_once_on_stop_events = {}
def get_sdk_version(): """Parses the SDK VERSION file for the SDK version. Returns: A semver string representing the SDK version, eg 1.9.55. If no VERSION file is available, eg for internal SDK builds, a non-semver default string is provided. """ version_object = sdk_update_checker.GetVersionObject() if version_object: return version_object['release'] else: return _DEFAULT_SDK_VERSION
def __init__(self): """Initializes a _MetricsLogger.""" # Attributes that will be set later and sent with logging HTTP requests. self._client_id = None self._user_agent = None self._runtimes = None self._start_time = None self._environment = None # self._python_version is in the form: major.minor.macro. self._python_version = '.'.join(map(str, sys.version_info[:3])) self._sdk_version = (sdk_update_checker.GetVersionObject() or {}).get('release') # Stores events for batch logging once Stop has been called. self._log_once_on_stop_events = {}
def _get_user_agent(): """Returns the value of the 'User-Agent' header to use for update requests.""" product_tokens = [] version = sdk_update_checker.GetVersionObject() if version is None: release = 'unknown' else: release = version['release'] product_tokens.append('%s/%s' % (SDK_PRODUCT, release)) # Platform. product_tokens.append(appengine_rpc.GetPlatformToken()) # Python version. python_version = '.'.join(str(i) for i in sys.version_info) product_tokens.append('Python/%s' % python_version) return ' '.join(product_tokens)
def _get_sdk_version(): version_object = sdk_update_checker.GetVersionObject() if version_object: return version_object['release'] else: return _DEFAULT_SDK_VERSION
def generate_gcd_app(app_id): """Generates an app in tmp for a cloud datastore implementation.""" if sys.platform == 'win32': # The temp directory is per-user on Windows so there is no reason to add # the username to the generated directory name. user_format = '' else: try: user_name = getpass.getuser() except Exception: # The possible set of exceptions is not documented. user_format = '' else: user_format = '.%s' % user_name tempdir = tempfile.gettempdir() version = sdk_update_checker.GetVersionObject() sdk_version = version['release'] if version else 'unknown' gcd_path = os.path.join( tempdir, 'appengine-gcd-war.%s%s%s' % (sdk_version, app_id, user_format)) if not os.path.exists(gcd_path): os.mkdir(gcd_path) webinf_path = os.path.join(gcd_path, 'WEB-INF') os.mkdir(webinf_path) filter_path = os.path.join(webinf_path, 'lib') os.mkdir(filter_path) if module.java_runtime: filter_jar = _get_filter_jar() shutil.copy(filter_jar, filter_path) with open(os.path.join(gcd_path, 'WEB-INF', 'web.xml'), 'w') as f: f.write("""<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <security-constraint> <web-resource-collection> <web-resource-name>datastore_constraint</web-resource-name> <url-pattern>/datastore/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <filter> <filter-name>ProtoJsonFilter</filter-name> <filter-class> com.google.apphosting.client.datastoreservice.app.filter.ProtoJsonFilter </filter-class> </filter> <filter-mapping> <filter-name>ProtoJsonFilter</filter-name> <url-pattern>/datastore/*</url-pattern> </filter-mapping> <servlet> <servlet-name>DatastoreApiServlet</servlet-name> <servlet-class> com.google.apphosting.client.datastoreservice.app.DatastoreApiServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DatastoreApiServlet</servlet-name> <url-pattern>/datastore/*</url-pattern> </servlet-mapping> </web-app>""") gcd_app_xml = os.path.join(gcd_path, 'WEB-INF', 'appengine-web.xml') with open(gcd_app_xml, 'w') as f: f.write("""<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>%s</application> <version>1</version> <module>google-cloud-datastore</module> <precompilation-enabled>true</precompilation-enabled> <threadsafe>true</threadsafe> </appengine-web-app>""" % app_id) return gcd_app_xml