Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)