Exemple #1
0
    def test_etc_hosts_entry_for_service_overrides(self, mock_url,
                                                   mock_get_host):
        self.override_config("object_store_ip_accessible", None)
        mock_url.return_value = "http://swift.org"
        mock_get_host.return_value = '1.1.1.1'

        res = cluster_utils.etc_hosts_entry_for_service('object-store')
        self.assertEqual('1.1.1.1 swift.org\n', res)

        self.override_config("object_store_ip_accessible", '2.2.2.2')

        res = cluster_utils.etc_hosts_entry_for_service('object-store')
        self.assertEqual('2.2.2.2 swift.org\n', res)
Exemple #2
0
    def _serialize_instance(self, ng):
        resources = {}
        properties = {}

        inst_name = _get_inst_name(ng)
        private_net = self.cluster.neutron_management_network

        sec_groups = self._get_security_groups(ng)

        # Check if cluster contains user key-pair and include it to template.
        if self.cluster.user_keypair_id:
            properties["key_name"] = self.cluster.user_keypair_id

        port_name = _get_port_name(ng)

        resources.update(self._serialize_port(
            port_name, private_net, sec_groups))

        properties["networks"] = [{"port": {"get_resource": "port"}}]

        if ng.floating_ip_pool:
            resources.update(self._serialize_neutron_floating(ng))

        gen_userdata_func = self.node_groups_extra[ng.id]['gen_userdata_func']
        key_script = gen_userdata_func(ng, inst_name)
        if CONF.heat_enable_wait_condition:
            etc_hosts = cl.etc_hosts_entry_for_service('orchestration')
            if etc_hosts:
                etc_hosts = "echo '%s' | sudo tee -a /etc/hosts" % etc_hosts
            tml = [key_script, WAIT_CONDITION_SCRIPT_TEMPLATE]
            if etc_hosts:
                tml = [key_script, etc_hosts, WAIT_CONDITION_SCRIPT_TEMPLATE]
            userdata = {
                "str_replace": {
                    "template": "\n".join(tml),
                    "params": {
                        "wc_notify": {
                            "get_attr": [
                                _get_wc_handle_name(ng.name),
                                "curl_cli"
                            ]
                        }
                    }
                }
            }
        else:
            userdata = key_script

        if ng.availability_zone:
            properties["availability_zone"] = ng.availability_zone

        properties.update(self._get_anti_affinity_scheduler_hints(ng))

        properties.update({
            "name": inst_name,
            "flavor": six.text_type(ng.flavor_id),
            "image": ng.get_image_id(),
            "admin_user": ng.image_username,
            "user_data": userdata
        })

        resources.update({
            INSTANCE_RESOURCE_NAME: {
                "type": "OS::Nova::Server",
                "properties": properties
            }
        })

        resources.update(self._serialize_designate_records())
        resources.update(self._serialize_designate_reverse_records())
        resources.update(self._serialize_volume(ng))
        resources.update(self._serialize_wait_condition(ng))
        return resources
Exemple #3
0
    def _serialize_instance(self, ng):
        resources = {}
        properties = {}

        inst_name = _get_inst_name(ng)
        private_net = self.cluster.neutron_management_network

        sec_groups = self._get_security_groups(ng)

        # Check if cluster contains user key-pair and include it to template.
        if self.cluster.user_keypair_id:
            properties["key_name"] = self.cluster.user_keypair_id

        port_name = _get_port_name(ng)

        resources.update(self._serialize_port(
            port_name, private_net, sec_groups))

        properties["networks"] = [{"port": {"get_resource": "port"}}]

        if ng.floating_ip_pool:
            resources.update(self._serialize_neutron_floating(ng))

        gen_userdata_func = self.node_groups_extra[ng.id]['gen_userdata_func']
        key_script = gen_userdata_func(ng, inst_name)
        if CONF.heat_enable_wait_condition:
            etc_hosts = cl.etc_hosts_entry_for_service('orchestration')
            if etc_hosts:
                etc_hosts = "echo '%s' | sudo tee -a /etc/hosts" % etc_hosts
            tml = [key_script, WAIT_CONDITION_SCRIPT_TEMPLATE]
            if etc_hosts:
                tml = [key_script, etc_hosts, WAIT_CONDITION_SCRIPT_TEMPLATE]
            userdata = {
                "str_replace": {
                    "template": "\n".join(tml),
                    "params": {
                        "wc_notify": {
                            "get_attr": [
                                _get_wc_handle_name(ng.name),
                                "curl_cli"
                            ]
                        }
                    }
                }
            }
        else:
            userdata = key_script

        if ng.availability_zone:
            properties["availability_zone"] = ng.availability_zone

        properties.update(self._get_anti_affinity_scheduler_hints(ng))

        properties.update({
            "name": inst_name,
            "flavor": six.text_type(ng.flavor_id),
            "admin_user": ng.image_username,
            "user_data": userdata
        })

        if ng.boot_from_volume:
            resources.update(self._get_bootable_volume(ng))
            properties["block_device_mapping"] = [
                {"device_name": "vda",
                 "volume_id": {"get_resource": "bootable_volume"},
                 "delete_on_termination": "true"}]

        else:
            properties.update({"image": ng.get_image_id()})

        resources.update({
            INSTANCE_RESOURCE_NAME: {
                "type": "OS::Nova::Server",
                "properties": properties
            }
        })

        resources.update(self._serialize_designate_records())
        resources.update(self._serialize_designate_reverse_records())
        resources.update(self._serialize_volume(ng))
        resources.update(self._serialize_wait_condition(ng))
        return resources