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')
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
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') ]
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)
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())
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)
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)
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.')
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)
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')
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)
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())
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)
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)
def testPatchNoFieldsSpecified(self): snapshot_ref = util.ParseSnapshot('snapshot1', self.Project()) with self.assertRaises(snapshots.NoFieldsSpecifiedError): self.snapshots_client.Patch(snapshot_ref)
def GetSnapshotUri(self, snapshot_name, project=None): return util.ParseSnapshot(snapshot_name, project or self.Project()).SelfLink()