def prepare_server_launch_config(group_id, server_config, lb_descriptions): """ Prepare a server config (the server part of the Group's launch config) with any necessary dynamic data. :param str group_id: The group ID :param PMap server_config: The server part of the Group's launch config, as per :obj:`otter.json_schema.group_schemas.server` except as the value of a one-element PMap with key "server". :param iterable lb_descriptions: iterable of :class:`ILBDescription` providers """ updated_metadata = merge( get_in(('server', 'metadata'), server_config, {}), generate_metadata(group_id, lb_descriptions)) return set_in(server_config, ('server', 'metadata'), updated_metadata)
def test_generate_metadata(self): """ :func:`NovaServer.lbs_from_metadata` produces a dictionary with metadata for the group ID and any load balancers provided. """ lbs = [ CLBDescription(port=80, lb_id="123"), RCv3Description(lb_id="123"), CLBDescription(port=8080, lb_id="123"), CLBDescription(port=80, lb_id="234"), RCv3Description(lb_id="3232"), ] expected = { "rax:autoscale:group:id": "group_id", "rax:auto_scaling_group_id": "group_id", "rax:autoscale:lb:CloudLoadBalancer:123": ('[{"port": 80}, {"port": 8080}]'), "rax:autoscale:lb:CloudLoadBalancer:234": '[{"port": 80}]', "rax:autoscale:lb:RackConnectV3:123": "", "rax:autoscale:lb:RackConnectV3:3232": "", } self.assertEqual(generate_metadata("group_id", lbs), expected)
def test_generate_metadata(self): """ :func:`NovaServer.lbs_from_metadata` produces a dictionary with metadata for the group ID and any load balancers provided. """ lbs = [ CLBDescription(port=80, lb_id='123'), RCv3Description(lb_id='123'), CLBDescription(port=8080, lb_id='123'), CLBDescription(port=80, lb_id='234'), RCv3Description(lb_id='3232'), ] expected = { 'rax:autoscale:group:id': 'group_id', 'rax:auto_scaling_group_id': 'group_id', 'rax:autoscale:lb:CloudLoadBalancer:123': ( '[{"port": 80}, {"port": 8080}]'), 'rax:autoscale:lb:CloudLoadBalancer:234': '[{"port": 80}]', 'rax:autoscale:lb:RackConnectV3:123': '', 'rax:autoscale:lb:RackConnectV3:3232': '', } self.assertEqual(generate_metadata('group_id', lbs), expected)