コード例 #1
0
    def _get_node_group_data(self, node_group):
        if node_group.flavor_id not in self.requested_flavors:
            flavor = nova.get_flavor(id=node_group.flavor_id)
            self.requested_flavors[node_group.flavor_id] = flavor
        else:
            flavor = self.requested_flavors[node_group.flavor_id]
        cpu = flavor.vcpus
        ram = flavor.ram
        data = {}
        # config recommendations was taken from Ambari code
        os = self._get_os_ram_recommendation(self._transform_mb_to_gb(ram))
        hbase = self._get_hbase_ram_recommendations(
            self._transform_mb_to_gb(ram))
        reserved_ram = self._transform_gb_to_mb(os + hbase)
        min_container_size = self._get_min_size_of_container(
            self._transform_mb_to_gb(ram))

        # we use large amount of containers to allow users to run
        # at least 4 jobs at same time on clusters based on small flavors
        data["containers"] = int(max(8, min(2 * cpu,
                                            ram / min_container_size)))
        data["ramPerContainer"] = (ram - reserved_ram) / data["containers"]
        data["ramPerContainer"] = max(data["ramPerContainer"],
                                      min_container_size)
        data["ramPerContainer"] = min(2048, int(data["ramPerContainer"]))

        data["ramPerContainer"] = int(data["ramPerContainer"])
        data["mapMemory"] = int(data["ramPerContainer"])
        data["reduceMemory"] = int(2 * data["ramPerContainer"])
        data["amMemory"] = int(min(data["mapMemory"], data["reduceMemory"]))

        return data
コード例 #2
0
    def _get_node_group_data(self, node_group):
        if node_group.flavor_id not in self.requested_flavors:
            flavor = nova.get_flavor(id=node_group.flavor_id)
            self.requested_flavors[node_group.flavor_id] = flavor
        else:
            flavor = self.requested_flavors[node_group.flavor_id]
        cpu = flavor.vcpus
        ram = flavor.ram
        data = {}
        # config recommendations was taken from Ambari code
        os = self._get_os_ram_recommendation(self._transform_mb_to_gb(ram))
        hbase = self._get_hbase_ram_recommendations(
            self._transform_mb_to_gb(ram))
        reserved_ram = self._transform_gb_to_mb(os + hbase)
        min_container_size = self._get_min_size_of_container(
            self._transform_mb_to_gb(ram))

        # we use large amount of containers to allow users to run
        # at least 4 jobs at same time on clusters based on small flavors
        data["containers"] = int(max(
            8, min(2 * cpu, ram / min_container_size)))
        data["ramPerContainer"] = (ram - reserved_ram) / data["containers"]
        data["ramPerContainer"] = max(data["ramPerContainer"],
                                      min_container_size)
        data["ramPerContainer"] = min(2048, int(data["ramPerContainer"]))

        data["ramPerContainer"] = int(data["ramPerContainer"])
        data["mapMemory"] = int(data["ramPerContainer"])
        data["reduceMemory"] = int(2 * data["ramPerContainer"])
        data["amMemory"] = int(min(data["mapMemory"], data["reduceMemory"]))

        return data
コード例 #3
0
ファイル: templates.py プロジェクト: wuhsh/sahara
    def _get_bootable_volume(self, node_group):
        node_group_flavor = nova.get_flavor(id=node_group.flavor_id)
        image_size = node_group_flavor.disk

        properties = {}
        properties["size"] = image_size
        properties["image"] = node_group.get_image_id()

        if node_group.boot_volume_type:
            properties["volume_type"] = node_group.boot_volume_type

        if node_group.boot_volume_availability_zone:
            properties["availability_zone"] = (
                node_group.boot_volume_availability_zone)

        if node_group.boot_volume_local_to_instance:
            properties["scheduler_hints"] = {
                "local_to_instance": {
                    "get_param": "instance"
                }
            }

        return {
            "bootable_volume": {
                "type": "OS::Cinder::Volume",
                "properties": properties
            }
        }
コード例 #4
0
ファイル: templates.py プロジェクト: openstack/sahara
    def _get_bootable_volume(self, node_group):
        node_group_flavor = nova.get_flavor(id=node_group.flavor_id)
        image_size = node_group_flavor.disk

        properties = {}
        properties["size"] = image_size
        properties["image"] = node_group.get_image_id()

        if node_group.boot_volume_type:
            properties["volume_type"] = node_group.boot_volume_type

        if node_group.boot_volume_availability_zone:
            properties["availability_zone"] = (
                node_group.boot_volume_availability_zone
            )

        if node_group.boot_volume_local_to_instance:
            properties["scheduler_hints"] = {
                "local_to_instance": {"get_param": "instance"}}

        return {
            "bootable_volume": {
                "type": "OS::Cinder::Volume",
                "properties": properties
            }
        }
コード例 #5
0
ファイル: templates.py プロジェクト: weizai118/sahara
    def _get_bootable_volume(self, node_group):
        node_group_flavor = nova.get_flavor(id=node_group.flavor_id)
        image_size = node_group_flavor.disk

        return {
            "bootable_volume": {
                "type": "OS::Cinder::Volume",
                "properties": {
                    "size": image_size,
                    "image": node_group.get_image_id()
                }
            }
        }
コード例 #6
0
def get_ephemeral(node_group):
    return nova.get_flavor(id=node_group.flavor_id).ephemeral
コード例 #7
0
ファイル: validation_utils.py プロジェクト: madar010/mad
def get_ephemeral(node_group):
    return nova.get_flavor(id=node_group.flavor_id).ephemeral
コード例 #8
0
def get_flavor(**kwargs):
    return nova.get_flavor(**kwargs)