示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
 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)
示例#6
0
 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)
示例#7
0
 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)
示例#8
0
 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)
示例#9
0
  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
示例#10
0
  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
示例#11
0
    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
示例#12
0
    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
示例#13
0
    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
示例#14
0
  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
示例#15
0
 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)
示例#16
0
 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)
示例#17
0
 def testParseMetadata_Empty(self, metadata, metadata_from_file):
     self.assertEqual(
         None,
         util.ParseMetadata(metadata, metadata_from_file, self.messages))