Как вы отлаживаете шаблоны менеджера развертывания Google? - PullRequest
0 голосов
/ 09 октября 2019

Я смотрю на этот пример: https://github.com/GoogleCloudPlatform/deploymentmanager-samples/tree/master/examples/v2/cloud_functions

, который использует этот шаблон. Я добавил к нему оператор печати, но как мне увидеть этот вывод?

import base64
import hashlib
from StringIO import StringIO
import zipfile


def GenerateConfig(ctx):
  """Generate YAML resource configuration."""
  in_memory_output_file = StringIO()
  function_name = ctx.env['deployment'] + 'cf'
  zip_file = zipfile.ZipFile(
      in_memory_output_file, mode='w', compression=zipfile.ZIP_DEFLATED)



  ####################################################
  ############ HOW DO I SEE THIS????? ################
  print('heelo wworrld')
  ####################################################
  ####################################################



  for imp in ctx.imports:
    if imp.startswith(ctx.properties['codeLocation']):
      zip_file.writestr(imp[len(ctx.properties['codeLocation']):],
                        ctx.imports[imp])
  zip_file.close()
  content = base64.b64encode(in_memory_output_file.getvalue())
  m = hashlib.md5()
  m.update(content)
  source_archive_url = 'gs://%s/%s' % (ctx.properties['codeBucket'],
                                       m.hexdigest() + '.zip')
  cmd = "echo '%s' | base64 -d > /function/function.zip;" % (content)
  volumes = [{'name': 'function-code', 'path': '/function'}]
  build_step = {
      'name': 'upload-function-code',
      'action': 'gcp-types/cloudbuild-v1:cloudbuild.projects.builds.create',
      'metadata': {
          'runtimePolicy': ['UPDATE_ON_CHANGE']
      },
      'properties': {
          'steps': [{
              'name': 'ubuntu',
              'args': ['bash', '-c', cmd],
              'volumes': volumes,
          }, {
              'name': 'gcr.io/cloud-builders/gsutil',
              'args': ['cp', '/function/function.zip', source_archive_url],
              'volumes': volumes
          }],
          'timeout':
              '120s'
      }
  }
  cloud_function = {
      'type': 'gcp-types/cloudfunctions-v1:projects.locations.functions',
      'name': function_name,
      'properties': {
          'parent':
              '/'.join([
                  'projects', ctx.env['project'], 'locations',
                  ctx.properties['location']
              ]),
          'function':
              function_name,
          'labels': {
              # Add the hash of the contents to trigger an update if the bucket
              # object changes
              'content-md5': m.hexdigest()
          },
          'sourceArchiveUrl':
              source_archive_url,
          'environmentVariables': {
              'codeHash': m.hexdigest()
          },
          'entryPoint':
              ctx.properties['entryPoint'],
          'httpsTrigger': {},
          'timeout':
              ctx.properties['timeout'],
          'availableMemoryMb':
              ctx.properties['availableMemoryMb'],
          'runtime':
              ctx.properties['runtime']
      },
      'metadata': {
          'dependsOn': ['upload-function-code']
      }
  }
  resources = [build_step, cloud_function]

  return {
      'resources':
          resources,
      'outputs': [{
          'name': 'sourceArchiveUrl',
          'value': source_archive_url
      }, {
          'name': 'name',
          'value': '$(ref.' + function_name + '.name)'
      }]
  }

РЕДАКТИРОВАТЬ: это никоим образом не является решением этой проблемы, но я обнаружил, что если я установлю кучу outputs для информации, я заинтересован в том, чтобы увидеть, что это помогает. Так что я думаю, что вы можете свернуть свой собственный вид логики, собирая информацию / вывод в список или что-то в вашем шаблоне python, а затем передавая все это обратно как output - не здорово, но лучше, чем ничего

1 Ответ

1 голос
/ 10 октября 2019

Deployment Manager - это служба развертывания инфраструктуры, которая автоматизирует создание и управление ресурсами Google Cloud Platform (GCP). То, что вы пытаетесь сделать в диспетчере развертывания, невозможно из-за его управляемой среды.

На данный момент единственным способом устранения неполадок является использование расширенного шаблона из панели мониторинга диспетчера развертывания. Уже имеется запрос функции для адресации вашего варианта использования здесь . Я советую вам пометить запрос функции, чтобы получать обновления по электронной почте и оставлять комментарии, чтобы показать интерес сообщества. Все официальные сообщения, касающиеся этой функции, будут размещены там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...