def testParseMetadata_ValueTooBig(self): value = 'a' * (32 * 1024 + 1) # Value must be <= 32 KB in size. metadata = {'key': value} with self.assertRaisesRegex( util.InvalidMetadataError, r'Maximum size of metadata values are 32KB'): util.ParseMetadata(metadata, None, self.messages)
def testParseMetadata_ValueFromEmptyFile(self): value = '' path = self._CreateMetadataValueFile('value.txt', value) metadata_from_file = {'key': path} with self.assertRaisesRegex(util.InvalidMetadataError, r'Metadata value cannot be empty'): util.ParseMetadata(None, metadata_from_file, self.messages)
def testParseMetadata_NoFromFile(self): metadata = {'key': 'value'} result = util.ParseMetadata(metadata, None, self.messages) expected = self.messages.Device.MetadataValue(additionalProperties=[ self._CreateAdditionalProperty('key', 'value') ]) self.assertEqual(result, expected)
def testParseMetadata_TotalSizeTooBig(self): value = 'a' * (26 * 1024) metadata = dict([(str(i), value) for i in range(10)]) with self.assertRaisesRegex( util.InvalidMetadataError, r'Maximum size of metadata key-value pairs is 256KB'): util.ParseMetadata(metadata, None, self.messages)
def testParseMetadata_OnlyFromFile(self): path = self._CreateMetadataValueFile('value.txt', 'value') metadata_from_file = {'key': path} result = util.ParseMetadata(None, metadata_from_file, self.messages) expected = self.messages.Device.MetadataValue(additionalProperties=[ self._CreateAdditionalProperty('key', 'value') ]) self.assertEqual(result, expected)
def testParseMetadata_ValueFromFileTooBig(self): value = 'a' * (32 * 1024 + 1) # Value must be <= 32 KB in size. path = self._CreateMetadataValueFile('value.txt', value) metadata_from_file = {'key': path} with self.assertRaisesRegex( util.InvalidMetadataError, r'Maximum size of metadata values are 32KB'): util.ParseMetadata(None, metadata_from_file, self.messages)
def testParseMetadata_OverlappingKeys(self): metadata = {'key1': 'value1', 'key2': 'value2'} metadata_from_file = {'key1': 'value3', 'key3': 'value4'} with self.assertRaisesRegex( util.InvalidMetadataError, r'Cannot specify the same key in both ' r'--metadata and --metadata-from-file'): util.ParseMetadata(metadata, metadata_from_file, self.messages)
def testParseMetadata_FromBothSources(self): metadata = {'key1': 'value'} path = self._CreateMetadataValueFile('value.txt', 'file_value') metadata_from_file = {'key2': path} result = util.ParseMetadata(metadata, metadata_from_file, self.messages) expected = self.messages.Device.MetadataValue(additionalProperties=[ self._CreateAdditionalProperty('key1', 'value'), self._CreateAdditionalProperty('key2', 'file_value') ]) self.assertEqual(result, expected)
def Run(self, args): client = devices.DevicesClient() device_ref = args.CONCEPTS.device.Parse() metadata = util.ParseMetadata(args.metadata, args.metadata_from_file, client.messages) device = client.Patch(device_ref, blocked=args.blocked, metadata=metadata) log.UpdatedResource(device_ref.Name(), 'device') return device
def Run(self, args): client = devices.DevicesClient() device_ref = util.ParseDevice(args.id, registry=args.registry, region=args.region) blocked = util.ParseDeviceBlocked(args.blocked, args.enable_device) metadata = util.ParseMetadata(args.metadata, args.metadata_from_file, client.messages) device = client.Patch(device_ref, blocked=blocked, metadata=metadata) log.UpdatedResource(device_ref.Name(), 'device') return device
def Run(self, args): client = devices.DevicesClient() device_ref = args.CONCEPTS.device.Parse() metadata = util.ParseMetadata(args.metadata, args.metadata_from_file, client.messages) log_level = util.ParseLogLevel( args.log_level, client.messages.Device.LogLevelValueValuesEnum) device = client.Patch(device_ref, blocked=args.blocked, metadata=metadata, log_level=log_level) log.UpdatedResource(device_ref.Name(), 'device') return device
def Run(self, args): client = devices.DevicesClient() device_ref = args.CONCEPTS.device.Parse() registry_ref = device_ref.Parent() credentials = util.ParseCredentials(args.public_keys, messages=client.messages) metadata = util.ParseMetadata(args.metadata, args.metadata_from_file, client.messages) response = client.Create(registry_ref, device_ref.devicesId, blocked=args.blocked, credentials=credentials, metadata=metadata) log.CreatedResource(device_ref.devicesId, 'device') return response
def Run(self, args): client = devices.DevicesClient() device_ref = args.CONCEPTS.device.Parse() metadata = util.ParseMetadata(args.metadata, args.metadata_from_file, client.messages) auth_method = flags.GATEWAY_AUTH_METHOD_ENUM_MAPPER.GetEnumForChoice( args.auth_method) log_level = util.ParseLogLevel( args.log_level, client.messages.Device.LogLevelValueValuesEnum) device = client.Patch(device_ref, blocked=args.blocked, metadata=metadata, auth_method=auth_method, log_level=log_level) log.UpdatedResource(device_ref.Name(), 'device') return device
def Run(self, args): client = devices.DevicesClient() registry_ref = util.ParseRegistry(args.registry, region=args.region) # Defaults are set here because right now with nested groups, help text # isn't being generated correctly. args_blocked = False if args.blocked is None else args.blocked args_enabled = True if args.enable_device is None else args.enable_device blocked = util.ParseDeviceBlocked(args_blocked, args_enabled) credentials = util.ParseCredentials(args.public_keys, messages=client.messages) metadata = util.ParseMetadata(args.metadata, args.metadata_from_file, client.messages) response = client.Create( registry_ref, args.id, blocked=blocked, credentials=credentials, metadata=metadata ) log.CreatedResource(args.id, 'device') return response
def testParseMetadata_TooManyKeys(self): metadata = dict([(str(i), str(i)) for i in range(501)]) with self.assertRaisesRegex( util.InvalidMetadataError, r'Maximum number of metadata key-value pairs is 500.'): util.ParseMetadata(metadata, None, self.messages)
def testParseMetadata_FileDoesntExist(self): path = 'fake/value.txt' metadata_from_file = {'key': path} with self.assertRaisesRegex(util.InvalidMetadataError, r'Could not read value file'): util.ParseMetadata(None, metadata_from_file, self.messages)
def testParseMetadata_Empty(self, metadata, metadata_from_file): self.assertEqual( None, util.ParseMetadata(metadata, metadata_from_file, self.messages))