Пример #1
0
  def testSnapshotsCreateLabels(self):
    snap_ref = util.ParseSnapshot('snap1', self.Project())
    sub_ref = util.ParseSubscription('subs1', self.Project())
    topic_ref = util.ParseTopic('topic1', self.Project())

    labels = self.msgs.CreateSnapshotRequest.LabelsValue(additionalProperties=[
        self.msgs.CreateSnapshotRequest.LabelsValue.AdditionalProperty(
            key='key1', value='value1'),
        self.msgs.CreateSnapshotRequest.LabelsValue.AdditionalProperty(
            key='key2', value='value2')])
    create_req = self.msgs.PubsubProjectsSnapshotsCreateRequest(
        createSnapshotRequest=self.msgs.CreateSnapshotRequest(
            subscription=sub_ref.RelativeName(),
            labels=labels),
        name=snap_ref.RelativeName()
    )

    create_resp = self.msgs.Snapshot(
        name=snap_ref.RelativeName(),
        topic=topic_ref.RelativeName(),
        expireTime='sometime')

    self.svc.Expect(request=create_req, response=create_resp)

    result = list(self.Run(
        'pubsub snapshots create snap1 '
        '--labels key1=value1,key2=value2 '
        '--subscription subs1'))

    self.assertEqual(result[0]['snapshotId'], snap_ref.RelativeName())
    self.assertEqual(result[0]['topic'], topic_ref.RelativeName())
    self.assertEqual(result[0]['expireTime'], 'sometime')
Пример #2
0
    def Run(self, args):
        """This is what gets called when the user runs this command.

    Args:
      args: an argparse namespace. All the arguments that were provided to this
        command invocation.

    Returns:
      A serialized object (dict) describing the results of the operation.  This
      description fits the Resource described in the ResourceRegistry under
      'pubsub.subscriptions.seek'.
    """
        client = subscriptions.SubscriptionsClient()

        subscription_ref = args.CONCEPTS.subscription.Parse()
        result = {'subscriptionId': subscription_ref.RelativeName()}

        snapshot_ref = None
        time = None
        if args.snapshot:
            snapshot_ref = util.ParseSnapshot(args.snapshot,
                                              args.snapshot_project)
            result['snapshotId'] = snapshot_ref.RelativeName()
        else:
            time = util.FormatSeekTime(args.time)
            result['time'] = time

        client.Seek(subscription_ref, time=time, snapshot_ref=snapshot_ref)

        return result
Пример #3
0
 def SetUp(self):
     self.track = calliope_base.ReleaseTrack.GA
     properties.VALUES.core.user_output_enabled.Set(True)
     self.svc = self.client.projects_snapshots.List
     self.project_ref = util.ParseProject(self.Project())
     self.snapshot_refs = [
         util.ParseSnapshot('snap{}'.format(i + 1), self.Project())
         for i in range(3)
     ]
     self.topic_refs = [
         util.ParseTopic('topic1', self.Project()),
         util.ParseTopic('topic2', self.Project())
     ]
     self.snapshots = [
         self.msgs.Snapshot(
             name=self.snapshot_refs[0].RelativeName(),
             topic=self.topic_refs[0].RelativeName(),
             expireTime='2016-10-31T12:34:56.000000Z',
         ),
         self.msgs.Snapshot(name=self.snapshot_refs[1].RelativeName(),
                            topic=self.topic_refs[1].RelativeName(),
                            expireTime='2015-02-12T09:08:07.000000Z'),
         self.msgs.Snapshot(name=self.snapshot_refs[2].RelativeName(),
                            topic=self.topic_refs[1].RelativeName(),
                            expireTime='2015-02-13T09:08:07.000000Z')
     ]
Пример #4
0
 def testCreate(self):
     snapshot_ref = util.ParseSnapshot('snap1', self.Project())
     subscription_ref = util.ParseSubscription('sub1', self.Project())
     create_req = self.msgs.PubsubProjectsSnapshotsCreateRequest(
         createSnapshotRequest=self.msgs.CreateSnapshotRequest(
             subscription=subscription_ref.RelativeName()),
         name=snapshot_ref.RelativeName())
     snapshot = self.msgs.Snapshot(name=snapshot_ref.RelativeName())
     self.snapshots_service.Create.Expect(create_req, snapshot)
     result = self.snapshots_client.Create(snapshot_ref, subscription_ref)
     self.assertEqual(result, snapshot)
Пример #5
0
    def testSnapshotsDelete(self):
        snapshot_to_delete = util.ParseSnapshot('snap1', self.Project())

        self.svc.Expect(request=self.msgs.PubsubProjectsSnapshotsDeleteRequest(
            snapshot=snapshot_to_delete.RelativeName()),
                        response='')

        result = list(self.Run('pubsub snapshots delete snap1'))

        self.assertEqual(1, len(result))
        self.assertEqual(result[0]['snapshotId'],
                         snapshot_to_delete.RelativeName())
Пример #6
0
    def testSeekToSnapshot(self):
        sub_ref = util.ParseSubscription('sub', self.Project())
        snap_ref = util.ParseSnapshot('snap', self.Project())

        seek_req = self.msgs.PubsubProjectsSubscriptionsSeekRequest(
            seekRequest=self.msgs.SeekRequest(
                snapshot=snap_ref.RelativeName()),
            subscription=sub_ref.RelativeName())
        self.svc.Expect(request=seek_req, response=self.msgs.SeekResponse())

        result = self.Run('pubsub subscriptions seek sub --snapshot snap')
        self.assertEqual(result['subscriptionId'], sub_ref.RelativeName())
        self.assertEqual(result['snapshotId'], snap_ref.RelativeName())
        self.assertNotIn('time', result)
Пример #7
0
 def testPatch(self):
     snapshot_ref = util.ParseSnapshot('snapshot1', self.Project())
     labels = self.msgs.Snapshot.LabelsValue(additionalProperties=[
         self.msgs.Snapshot.LabelsValue.AdditionalProperty(key='label',
                                                           value='value')
     ])
     snapshot = self.msgs.Snapshot(name=snapshot_ref.RelativeName(),
                                   labels=labels)
     self.snapshots_service.Patch.Expect(
         self.msgs.PubsubProjectsSnapshotsPatchRequest(
             name=snapshot_ref.RelativeName(),
             updateSnapshotRequest=self.msgs.UpdateSnapshotRequest(
                 snapshot=snapshot, updateMask='labels')), snapshot)
     self.assertEqual(self.snapshots_client.Patch(snapshot_ref, labels),
                      snapshot)
Пример #8
0
    def testSnapshotsDeleteNonExistent(self):
        snapshot_to_delete = util.ParseSnapshot('not_there', self.Project())

        self.svc.Expect(request=self.msgs.PubsubProjectsSnapshotsDeleteRequest(
            snapshot=snapshot_to_delete.RelativeName()),
                        response='',
                        exception=http_error.MakeHttpError(
                            message='Snapshot does not exist.'))

        with self.AssertRaisesExceptionMatches(
                util.RequestsFailedError,
                'Failed to delete the following: [not_there].'):
            self.Run('pubsub snapshots delete not_there')
        self.AssertErrContains(snapshot_to_delete.RelativeName())
        self.AssertErrContains('Snapshot does not exist.')
Пример #9
0
    def Run(self, args):
        """This is what gets called when the user runs this command.

    Args:
      args: an argparse namespace. All the arguments that were provided to this
        command invocation.

    Returns:
      A serialized object (dict) describing the results of the operation.
      This description fits the Resource described in the ResourceRegistry under
      'pubsub.projects.snapshots'.
    """
        client = snapshots.SnapshotsClient()
        snapshot_ref = util.ParseSnapshot(args.snapshot)
        return client.Get(snapshot_ref)
Пример #10
0
    def Run(self, args):
        """This is what gets called when the user runs this command.

    Args:
      args: an argparse namespace. All the arguments that were provided to this
        command invocation.

    Yields:
      A serialized object (dict) describing the results of the operation.
      This description fits the Resource described in the ResourceRegistry under
      'pubsub.projects.snapshots'.

    Raises:
      util.RequestFailedError: if any of the requests to the API failed.
    """
        client = snapshots.SnapshotsClient()

        subscription_ref = util.ParseSubscription(args.subscription,
                                                  args.subscription_project)

        labels = labels_util.ParseCreateArgs(
            args, client.messages.CreateSnapshotRequest.LabelsValue)

        failed = []
        for snapshot_name in args.snapshot:
            snapshot_ref = util.ParseSnapshot(snapshot_name)

            try:
                result = client.Create(snapshot_ref,
                                       subscription_ref,
                                       labels=labels)
            except api_ex.HttpError as error:
                exc = exceptions.HttpException(error)
                log.CreatedResource(snapshot_ref.RelativeName(),
                                    kind='snapshot',
                                    failed=exc.payload.status_message)
                failed.append(snapshot_name)
                continue

            result = util.SnapshotDisplayDict(result)
            log.CreatedResource(snapshot_ref.RelativeName(), kind='snapshot')
            yield result

        if failed:
            raise util.RequestsFailedError(failed, 'create')
Пример #11
0
 def testCreate_Labels(self):
     labels = self.msgs.CreateSnapshotRequest.LabelsValue(
         additionalProperties=[
             self.msgs.CreateSnapshotRequest.LabelsValue.AdditionalProperty(
                 key='label1', value='value1')
         ])
     snapshot_ref = util.ParseSnapshot('snap1', self.Project())
     subscription_ref = util.ParseSubscription('sub1', self.Project())
     create_req = self.msgs.PubsubProjectsSnapshotsCreateRequest(
         createSnapshotRequest=self.msgs.CreateSnapshotRequest(
             subscription=subscription_ref.RelativeName(), labels=labels),
         name=snapshot_ref.RelativeName())
     snapshot = self.msgs.Snapshot(name=snapshot_ref.RelativeName())
     self.snapshots_service.Create.Expect(create_req, snapshot)
     result = self.snapshots_client.Create(snapshot_ref,
                                           subscription_ref,
                                           labels=labels)
     self.assertEqual(result, snapshot)
Пример #12
0
  def testSnapshotsCreateWithNonExistentSubscription(self):
    snap_ref = util.ParseSnapshot('snap1', self.Project())
    sub_ref = util.ParseSubscription('subs-DNE', self.Project())

    create_req = self.msgs.PubsubProjectsSnapshotsCreateRequest(
        createSnapshotRequest=self.msgs.CreateSnapshotRequest(
            subscription=sub_ref.RelativeName()),
        name=snap_ref.RelativeName())

    self.svc.Expect(
        request=create_req,
        response=None,
        exception=http_error.MakeHttpError(404, 'Subscription does not exist.'),
    )

    with self.AssertRaisesExceptionMatches(
        util.RequestsFailedError,
        'Failed to create the following: [snap1].'):
      self.Run('pubsub snapshots create snap1 '
               '--subscription subs-DNE')
    self.AssertErrContains(snap_ref.RelativeName())
    self.AssertErrContains('Subscription does not exist.')
    def testCreationUpdateDeletionFlow(self):
        id_gen = e2e_utils.GetResourceNameGenerator(prefix='cpstest')
        topic_name = next(id_gen)
        subscription_name = next(id_gen)
        snapshot_name = next(id_gen)

        with self._CreateTopic(topic_name), \
             self._CreateSubscription(topic_name, subscription_name, 20) as sub, \
             self._CreateSnapshot(topic_name, subscription_name, snapshot_name):
            self.assertEqual(20, sub.ackDeadlineSeconds)
            result = self.ClearAndRun(
                'subscriptions update {0} --ack-deadline=40'
                ' --format=disable'.format(subscription_name))
            sub_ref = util.ParseSubscription(subscription_name, self.Project())
            self.AssertErrEquals('Updated subscription [{}].\n'.format(
                sub_ref.RelativeName()))
            self.assertEqual(40, result.ackDeadlineSeconds)

            result = self.ClearAndRun(
                'snapshots describe {}'.format(snapshot_name))
            snapshot_ref = util.ParseSnapshot(snapshot_name, self.Project())
            self.assertEqual(result.name, snapshot_ref.RelativeName())
Пример #14
0
  def testSnapshotsCreateWithFullUri(self):
    snap_ref = util.ParseSnapshot('snap1', self.Project())
    sub_ref = util.ParseSubscription('subs1', 'other-project')
    topic_ref = util.ParseTopic('topic1', 'other-project')

    create_req = self.msgs.PubsubProjectsSnapshotsCreateRequest(
        createSnapshotRequest=self.msgs.CreateSnapshotRequest(
            subscription=sub_ref.RelativeName()),
        name=snap_ref.RelativeName())

    create_resp = self.msgs.Snapshot(name=snap_ref.RelativeName(),
                                     topic=topic_ref.RelativeName(),
                                     expireTime='sometime')

    self.svc.Expect(request=create_req, response=create_resp)

    result = list(self.Run(
        'pubsub snapshots create snap1 --subscription {}'.format(
            sub_ref.SelfLink())))

    self.assertEqual(result[0]['snapshotId'], snap_ref.RelativeName())
    self.assertEqual(result[0]['topic'], topic_ref.RelativeName())
    self.assertEqual(result[0]['expireTime'], 'sometime')
 def _CreateSnapshotNames(self, names):
     return [
         util.ParseSnapshot(name, self.Project()).RelativeName()
         for name in names
     ]
 def testSeek_snapshot(self):
     sub_ref = util.ParseSubscription('sub1', self.Project())
     snapshot_ref = util.ParseSnapshot('snap1', self.Project())
     self._ExpectSeek(sub_ref, snapshot_ref=snapshot_ref)
     self.subscriptions_client.Seek(sub_ref, snapshot_ref=snapshot_ref)
Пример #17
0
 def testDelete(self):
     snapshot_ref = util.ParseSnapshot('snap1', self.Project())
     self.snapshots_service.Delete.Expect(
         self.msgs.PubsubProjectsSnapshotsDeleteRequest(
             snapshot=snapshot_ref.RelativeName()), self.msgs.Empty())
     self.snapshots_client.Delete(snapshot_ref)
Пример #18
0
 def testPatchNoFieldsSpecified(self):
     snapshot_ref = util.ParseSnapshot('snapshot1', self.Project())
     with self.assertRaises(snapshots.NoFieldsSpecifiedError):
         self.snapshots_client.Patch(snapshot_ref)
Пример #19
0
 def GetSnapshotUri(self, snapshot_name, project=None):
     return util.ParseSnapshot(snapshot_name, project
                               or self.Project()).SelfLink()