def main()

in image_test/oslogin-ssh/oslogin-ssh-master-tester.py [0:0]


def main():
  global MD
  global MASTER_KEY
  global OSLOGIN_TESTER
  global OSADMINLOGIN_TESTER
  global TESTEE
  global OSLOGIN_USERS_LIB
  global UNIQUE_ID_USER

  logging.info("master: starting environment configuration")

  TESTEE = MM.FetchMetadataDefault('testee')
  OSLOGIN_TESTER = MM.FetchMetadataDefault('osLoginTester')
  OSADMINLOGIN_TESTER = MM.FetchMetadataDefault('osAdminLoginTester')
  credentials, _ = auth.default()
  OSLOGIN_USERS_LIB = utils.GetOslogin(discovery, credentials).users()
  UNIQUE_ID_USER = utils.GetServiceAccountUniqueIDUser()
  username = utils.GetCurrentLoginProfileUsername(OSLOGIN_USERS_LIB,
                                                  UNIQUE_ID_USER)
  compute = utils.GetCompute(discovery, credentials)

  MD = MM(compute, TESTEE, username)
  SetEnableOsLogin(None, MM.PROJECT_LEVEL)
  SetEnableOsLogin(None, MM.INSTANCE_LEVEL)

  # Enable OsLogin in slaves
  md = MM(compute, OSLOGIN_TESTER, username)
  SetEnableOsLogin(True, MM.INSTANCE_LEVEL, md)
  md = MM(compute, OSADMINLOGIN_TESTER, username)
  SetEnableOsLogin(True, MM.INSTANCE_LEVEL, md)

  # Add key in Metadata and in OsLogin to allow access peers in both modes
  MASTER_KEY = MD.AddSshKey(MM.SSH_KEYS, MM.PROJECT_LEVEL)
  master_key_fingerprint = AddKeyOsLogin(MASTER_KEY + '.pub')

  # Execute tests
  try:
    logging.info("master: starting: TestOsLogin(MM.INSTANCE_LEVEL)")
    TestOsLogin(MM.INSTANCE_LEVEL)

    logging.info("master: starting: TestOsLogin(MM.PROJECT_LEVEL)")
    TestOsLogin(MM.PROJECT_LEVEL)

    logging.info(
        "master: starting: TestMetadataWithOsLogin(MM.INSTANCE_LEVEL)")
    TestMetadataWithOsLogin(MM.INSTANCE_LEVEL)

    logging.info("master: starting: TestMetadataWithOsLogin(MM.PROJECT_LEVEL)")
    TestMetadataWithOsLogin(MM.PROJECT_LEVEL)

    logging.info("master: starting test: TestOsLoginFalseInInstance()")
    TestOsLoginFalseInInstance()

  # Clean keys
  finally:
    logging.info("master: starting environment cleanup")
    MD.RemoveSshKey(MASTER_KEY, MM.SSH_KEYS, MM.PROJECT_LEVEL)
    RemoveKeyOsLogin(master_key_fingerprint)