def test_pod_fromdict(self): hostname = factory.make_name("hostname") cores = random.randint(1, 8) cpu_speed = random.randint(1000, 2000) memory = random.randint(4096, 8192) local_storage = random.randint(4096, 8192) iscsi_storage = random.randint(4096, 8192) hints = dict( cores=random.randint(1, 8), cpu_speed=random.randint(1000, 2000), memory=random.randint(4096, 8192), local_storage=random.randint(4096, 8192), iscsi_storage=random.randint(4096, 8192), ) machines_data = [] for _ in range(3): cores = random.randint(1, 8) cpu_speed = random.randint(1000, 2000) memory = random.randint(4096, 8192) interfaces = [ dict(mac_address=factory.make_mac_address()) for _ in range(3) ] block_devices = [ dict( model=factory.make_name("model"), serial=factory.make_name("serial"), size=random.randint(512, 1024), ) for _ in range(3) ] for _ in range(3): block_devices.append( dict( model=None, serial=None, size=random.randint(512, 1024), type=BlockDeviceType.ISCSI, iscsi_target=self.make_iscsi_target(), )) machines_data.append( dict( hostname=hostname, architecture="amd64/generic", cores=cores, cpu_speed=cpu_speed, memory=memory, interfaces=interfaces, block_devices=block_devices, )) pod_data = dict( architectures=["amd64/generic"], cores=cores, cpu_speed=cpu_speed, memory=memory, local_storage=local_storage, iscsi_storage=iscsi_storage, hints=hints, machines=machines_data, ) pod = DiscoveredPod.fromdict(pod_data) self.assertThat(pod, IsInstance(DiscoveredPod)) self.assertThat( pod, MatchesStructure( architectures=Equals(["amd64/generic"]), cores=Equals(cores), cpu_speed=Equals(cpu_speed), memory=Equals(memory), local_storage=Equals(local_storage), iscsi_storage=Equals(iscsi_storage), hints=MatchesAll( IsInstance(DiscoveredPodHints), MatchesStructure( cores=Equals(hints["cores"]), cpu_speed=Equals(hints["cpu_speed"]), memory=Equals(hints["memory"]), local_storage=Equals(hints["local_storage"]), iscsi_storage=Equals(hints["iscsi_storage"]), ), ), machines=MatchesListwise([ MatchesAll( IsInstance(DiscoveredMachine), MatchesStructure( architecture=Equals("amd64/generic"), cores=Equals(machine["cores"]), cpu_speed=Equals(machine["cpu_speed"]), memory=Equals(machine["memory"]), interfaces=MatchesListwise([ MatchesAll( IsInstance(DiscoveredMachineInterface), MatchesStructure( mac_address=Equals( interface["mac_address"]), vid=Equals(-1), tags=Equals([]), ), ) for interface in machine["interfaces"] ]), block_devices=MatchesListwise([ MatchesAll( IsInstance(DiscoveredMachineBlockDevice), MatchesStructure( model=Equals(block_device["model"]), serial=Equals(block_device["serial"]), size=Equals(block_device["size"]), block_size=Equals(512), tags=Equals([]), type=Equals(BlockDeviceType.PHYSICAL), ), ) for block_device in machine["block_devices"] if "type" not in block_device ] + [ MatchesAll( IsInstance(DiscoveredMachineBlockDevice), MatchesStructure( model=Is(None), serial=Is(None), size=Equals(block_device["size"]), block_size=Equals(512), tags=Equals([]), type=Equals(BlockDeviceType.ISCSI), iscsi_target=Equals( block_device["iscsi_target"]), ), ) for block_device in machine["block_devices"] if "type" in block_device ]), ), ) for machine in machines_data ]), ), )
def fromString(self, inString): # Circular imports. from provisioningserver.drivers.pod import DiscoveredPod data = super(AmpDiscoveredPod, self).fromString(inString) return DiscoveredPod.fromdict(data)