コード例 #1
0
def start_patch():
    get_clusters_p = mock.patch("savanna.service.api.get_clusters")
    get_cluster_p = mock.patch("savanna.service.api.get_cluster")
    get_ng_templates_p = \
        mock.patch("savanna.service.api.get_node_group_templates")
    get_ng_template_p = \
        mock.patch("savanna.service.api.get_node_group_template")
    get_plugins_p = mock.patch("savanna.service.api.get_plugins")
    get_plugin_p = \
        mock.patch("savanna.plugins.base.PluginManager.get_plugin")
    get_cl_templates_p = \
        mock.patch("savanna.service.api.get_cluster_templates")
    get_cl_template_p = \
        mock.patch("savanna.service.api.get_cluster_template")
    nova_p = mock.patch("savanna.utils.openstack.nova.client")
    keystone_p = mock.patch("savanna.utils.openstack.keystone.client")
    get_image_p = mock.patch("savanna.service.api.get_image")

    get_image = get_image_p.start()
    get_clusters = get_clusters_p.start()
    get_cluster = get_cluster_p.start()
    get_ng_templates = get_ng_templates_p.start()
    get_ng_template = get_ng_template_p.start()
    get_plugins = get_plugins_p.start()
    get_plugin = get_plugin_p.start()
    get_cl_templates = get_cl_templates_p.start()
    get_cl_template_p.start()

    nova = nova_p.start()
    keystone = keystone_p.start()

    get_cl_templates.return_value = []

    nova().flavors.get.side_effect = _get_flavor
    nova().keypairs.get.side_effect = _get_keypair

    class Service:
        @property
        def name(self):
            return 'cinder'

    def _services_list():
        return [Service()]

    keystone().services.list.side_effect = _services_list

    class Image:
        def __init__(self, name='test'):
            self.name = name

        @property
        def id(self):
            if self.name == 'test':
                return '550e8400-e29b-41d4-a716-446655440000'
            else:
                return '813fe450-40d2-4acc-ade5-ea753a1bd5bc'

        @property
        def tags(self):
            if self.name == 'test':
                return ['vanilla', '1.1.2']
            else:
                return ['wrong_tag']

    def _get_image(id):
        if id == '550e8400-e29b-41d4-a716-446655440000':
            return Image()
        else:
            return Image('wrong_test')

    get_image.side_effect = _get_image
    nova().images.list_registered.return_value = [Image(),
                                                  Image(name='wrong_name')]
    ng_dict = tu._make_ng_dict('ng', '42', ['namenode'], 1)
    cluster = tu._create_cluster('test', 't', 'vanilla', '1.2.2', [ng_dict],
                                 id=1, status='Active')
    # stub clusters list
    get_clusters.return_value = [cluster]
    get_cluster.return_value = cluster

    # stub node templates
    ngt_dict = {'name': 'test', 'tenant_id': 't', 'flavor_id': '42',
                'plugin_name': 'vanilla', 'hadoop_version': '1.2.2',
                #'id': '1234321',
                'id': '550e8400-e29b-41d4-a716-446655440000',
                'node_processes': ['namenode']}

    get_ng_templates.return_value = [r.NodeGroupTemplateResource(ngt_dict)]

    ct_dict = {'name': 'test', 'tenant_id': 't',
               'plugin_name': 'vanilla', 'hadoop_version': '1.2.2'}

    get_cl_templates.return_value = [r.ClusterTemplateResource(ct_dict)]

    vanilla = plugin.VanillaProvider()
    vanilla.name = 'vanilla'
    get_plugins.return_value = [vanilla]

    def _get_ng_template(id):
        for template in get_ng_templates():
            if template.id == id:
                return template
        return None

    def _get_plugin(name):
        if name == 'vanilla':
            return vanilla
        return None

    get_plugin.side_effect = _get_plugin
    get_ng_template.side_effect = _get_ng_template
    # request data to validate
    patchers = (get_clusters_p, get_ng_templates_p, get_ng_template_p,
                get_plugins_p, get_plugin_p,
                get_cl_template_p, get_cl_templates_p, nova_p, keystone_p,
                get_image_p)
    return patchers
コード例 #2
0
def create_cluster_template(ctx, dct):
    return r.ClusterTemplateResource(dct)