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 = {}
示例#2
0
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
示例#3
0
    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()
示例#4
0
    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()
示例#5
0
 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 = {}
示例#6
0
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 = {}
示例#8
0
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