Пример #1
0
    def SetUp(self):
        self.api_version = gkehub_api_util.GetApiVersionForTrack(self.track)
        self.exclusivity_msg = core_apis.GetMessagesModule(
            self.MODULE_NAME, gkehub_api_util.GKEHUB_BETA_API_VERSION)
        self.messages = core_apis.GetMessagesModule(self.MODULE_NAME,
                                                    self.api_version)
        self.mocked_client = apimock.Client(
            client_class=core_apis.GetClientClass(self.MODULE_NAME,
                                                  self.api_version))
        self.mocked_client.Mock()
        self.addCleanup(self.mocked_client.Unmock)

        self.wait_operation_ref = resources.REGISTRY.Parse(
            'operation-1414184316101-d4546dd2',
            collection='gkehub.projects.locations.operations',
            params={
                'locationsId': 'global',
                'projectsId': self.Project(),
            },
            api_version=self.api_version)
        self.wait_operation_relative_name = self.wait_operation_ref.RelativeName(
        )

        self.parent = 'projects/{0}/locations/global'.format(self.Project())
        self.membership = '{0}/memberships/{1}'.format(self.parent,
                                                       self.MEMBERSHIP_NAME)
Пример #2
0
def _GenerateManifest(args, service_account_key_data, image_pull_secret_data,
                      upgrade, membership_ref, release_track=None):
  """Generate the manifest for connect agent from API.

  Args:
    args: arguments of the command.
    service_account_key_data: The contents of a Google IAM service account JSON
      file.
    image_pull_secret_data: The image pull secret content to use for private
      registries.
    upgrade: if this is an upgrade operation.
    membership_ref: The membership associated with the connect agent in the
      format of `projects/[PROJECT]/locations/global/memberships/[MEMBERSHIP]`
    release_track: the release_track used in the gcloud command,
      or None if it is not available.

  Returns:
    The full manifest to deploy the connect agent resources.
  """
  api_version = gkehub_api_util.GetApiVersionForTrack(release_track)
  delimeter = '---\n'
  full_manifest = ''

  # Based on the API version, use api_adapter if GenerateConnectAgentManifest is
  # a nested message, else use the default api_client.
  if api_version in ['v1beta1']:
    adapter = gkehub_api_adapter.NewAPIAdapter(api_version)
    connect_agent_ref = _GetConnectAgentOptions(args, upgrade,
                                                DEFAULT_NAMESPACE,
                                                image_pull_secret_data,
                                                membership_ref)
    manifest_resources = adapter.GenerateConnectAgentManifest(connect_agent_ref)
    for resource in manifest_resources:
      full_manifest = full_manifest + resource['manifest'] + delimeter
  else:
    manifest_resources = api_util.GenerateConnectAgentManifest(
        membership_ref,
        image_pull_secret_content=image_pull_secret_data,
        is_upgrade=upgrade,
        namespace=DEFAULT_NAMESPACE,
        proxy=args.proxy,
        registry=args.docker_registry,
        version=args.version,
        release_track=release_track)

    for resource in manifest_resources.manifest:
      full_manifest = full_manifest + resource.manifest + delimeter

  # Append creds secret.
  full_manifest = full_manifest + CREDENTIAL_SECRET_TEMPLATE.format(
      namespace=DEFAULT_NAMESPACE,
      gcp_sa_key_secret_name=GCP_SA_KEY_SECRET_NAME,
      gcp_sa_key=encoding.Decode(service_account_key_data, encoding='utf8'))
  return full_manifest