예제 #1
0
def create(vca_client, **kwargs):
    """
        create server by template,
        if external_resource set return without creation,
        e.g.:
        {
            'management_network': '_management_network',
            'server': {
                'template': 'template',
                'catalog': 'catalog',
                'guest_customization': {
                    'pre_script': 'pre_script',
                    'post_script': 'post_script',
                    'admin_password': '******',
                    'computer_name': 'computer'

                }
            }
        }
    """
    config = get_vcloud_config()
    server = {
        'name': ctx.instance.id,
    }
    server.update(ctx.node.properties.get('server', {}))
    transform_resource_name(server, ctx)

    if ctx.node.properties.get('use_external_resource'):
        res_id = ctx.node.properties['resource_id']
        ctx.instance.runtime_properties[VCLOUD_VAPP_NAME] = res_id
        ctx.logger.info(
            "External resource {0} has been used".format(res_id))
    else:
        _create(vca_client, config, server)
예제 #2
0
def create(vca_client, **kwargs):
    """
        create server by template,
        if external_resource set return without creation,
        e.g.:
        {
            'management_network': '_management_network',
            'server': {
                'template': 'template',
                'catalog': 'catalog',
                'guest_customization': {
                    'pre_script': 'pre_script',
                    'post_script': 'post_script',
                    'public_keys': [{
                        'key': True
                    }]
                }
            }
        }
    """
    config = get_vcloud_config()
    server = {
        'name': ctx.instance.id,
    }
    server.update(ctx.node.properties.get('server', {}))
    transform_resource_name(server, ctx)

    if ctx.node.properties.get('use_external_resource'):
        res_id = ctx.node.properties['resource_id']
        ctx.instance.runtime_properties[VCLOUD_VAPP_NAME] = res_id
        ctx.logger.info("External resource {0} has been used".format(res_id))
    else:
        _create(vca_client, config, server)
 def test_transform_resource_name(self):
     fake_ctx = self.generate_node_context()
     fake_ctx._bootstrap_context = mock.Mock()
     fake_ctx._bootstrap_context.resources_prefix = None
     # wrong resource name type
     with self.assertRaises(ValueError):
         vcloud_plugin_common.transform_resource_name(None, fake_ctx)
     with self.assertRaises(ValueError):
         vcloud_plugin_common.transform_resource_name(11, fake_ctx)
     # resource name string
     self.assertEqual(
         vcloud_plugin_common.transform_resource_name('test', fake_ctx),
         'test')
     # resource name is dict
     self.assertEqual(
         vcloud_plugin_common.transform_resource_name({'name': 'test'},
                                                      fake_ctx), 'test')
     # prefix not exist in name
     fake_ctx._bootstrap_context.resources_prefix = 'prfx_'
     self.assertEqual(
         vcloud_plugin_common.transform_resource_name('test', fake_ctx),
         'prfx_test')
     # prefix exist in name
     fake_ctx._bootstrap_context.resources_prefix = 'prfx_'
     self.assertEqual(
         vcloud_plugin_common.transform_resource_name(
             'prfx_test', fake_ctx), 'prfx_prfx_test')
예제 #4
0
def create(vca_client, **kwargs):
    config = get_vcloud_config()
    server = {
        'name': ctx.instance.id,
    }
    server.update(ctx.node.properties.get('server', {}))
    transform_resource_name(server, ctx)

    if ctx.node.properties.get('use_external_resource'):
        res_id = ctx.node.properties['resource_id']
        ctx.instance.runtime_properties[VCLOUD_VAPP_NAME] = res_id
        ctx.logger.info(
            "External resource {0} has been used".format(res_id))
    else:
        _create(vca_client, config, server)
예제 #5
0
def create(vca_client, **kwargs):
    """
        create server by template,
        if external_resource set return without creation,
        e.g.:
        {
            'management_network': '_management_network',
            'server': {
                'template': 'template',
                'catalog': 'catalog',
                'guest_customization': {
                    'pre_script': 'pre_script',
                    'post_script': 'post_script',
                    'admin_password': '******',
                    'computer_name': 'computer'

                }
            }
        }
    """
    config = get_vcloud_config()
    server = {
        'name': ctx.instance.id,
    }
    server.update(ctx.node.properties.get('server', {}))
    transform_resource_name(server, ctx)

    if ctx.node.properties.get('use_external_resource'):
        res_id = ctx.node.properties['resource_id']
        ctx.instance.runtime_properties[VCLOUD_VAPP_NAME] = res_id
        vdc = vca_client.get_vdc(config['vdc'])
        if not vca_client.get_vapp(vdc, res_id):
            raise cfy_exc.NonRecoverableError(
                "Unable to find external vAPP server resource {0}."
                .format(res_id))
        server.update({'name': res_id})
        ctx.logger.info(
            "External resource {0} has been used".format(res_id))
    else:
        _create(vca_client, config, server)
 def test_transform_resource_name(self):
     fake_ctx = self.generate_node_context()
     fake_ctx._bootstrap_context = mock.Mock()
     fake_ctx._bootstrap_context.resources_prefix = None
     # wrong resource name type
     with self.assertRaises(ValueError):
         vcloud_plugin_common.transform_resource_name(None, fake_ctx)
     with self.assertRaises(ValueError):
         vcloud_plugin_common.transform_resource_name(11, fake_ctx)
     # resource name string
     self.assertEqual(vcloud_plugin_common.transform_resource_name("test", fake_ctx), "test")
     # resource name is dict
     self.assertEqual(vcloud_plugin_common.transform_resource_name({"name": "test"}, fake_ctx), "test")
     # prefix not exist in name
     fake_ctx._bootstrap_context.resources_prefix = "prfx_"
     self.assertEqual(vcloud_plugin_common.transform_resource_name("test", fake_ctx), "prfx_test")
     # prefix exist in name
     fake_ctx._bootstrap_context.resources_prefix = "prfx_"
     self.assertEqual(vcloud_plugin_common.transform_resource_name("prfx_test", fake_ctx), "prfx_prfx_test")