Omitir vínculos de navegación | |
Salir de la Vista de impresión | |
![]() |
Guía de administración de Oracle® ZFS Storage Appliance, versión 2013.1.3.0 |
Acerca de Oracle ZFS Storage Appliance
Configuración de Oracle ZFS Storage Appliance
Mantenimiento de Oracle ZFS Storage Appliance
Trabajar con flujos de trabajo de mantenimiento
Descripción de flujos de trabajo
Descripción de los parámetros de flujos de trabajo
Parámetros restringidos de flujos de trabajo
Parámetros de flujo de trabajo opcionales
Manejo de errores de flujo de trabajo
Validación de entradas de flujo de trabajo
Auditoría y generación de informes de ejecución de flujos de trabajo
Descripción de control de versiones de flujos de trabajo
Uso de los flujos de trabajo para acciones de alerta
Uso de flujos de trabajo programados
Uso de flujo de trabajo programado
Codificación de programas de flujo de trabajo
Carga de flujos de trabajo con la BUI
Descarga de flujos de trabajo mediante el uso de la CLI
Mostrar flujos de trabajo mediante el uso de la CLI
Ejecución de flujos de trabajo con la CLI
Trabajo con recursos compartidos
Integración de aplicaciones con Oracle ZFS Storage Appliance
El siguiente ejemplo es un flujo de trabajo que crea una hoja de trabajo basada en un tipo de unidad especificada:
Ejemplo 4-13 Selección de tipo de dispositivo de flujo de trabajovar steps = [ { step: 'Checking for existing worksheet', execute: function (params) { /* * In this step, we're going to see if the worksheet that * we're going to create already exists. If the worksheet * already exists, we blow it away if the user has indicated * that they desire this behavior. Note that we store our * derived worksheet name with the parameters, even though * it is not a parameter per se; this is explicitly allowed, * and it allows us to build state in one step that is * processed in another without requiring additional global * variables. */ params.worksheet = 'Drilling down on ' + params.type + ' disks'; try { run('analytics worksheets select name="' + params.worksheet + '"'); if (params.overwrite) { run('confirm destroy'); return; } throw ('Worksheet called "' + params.worksheet + '" already exists!'); } catch (err) { if (err.code != EAKSH_ENTITY_BADSELECT) throw (err); } } }, { step: 'Finding disks of specified type', execute: function (params) { /* * In this step, we will iterate over all chassis, and for * each chassis iterates over all disks in the chassis, * looking for disks that match the specified type. */ var chassis, name, disks; var i, j; run('cd /'); run('maintenance hardware'); chassis = list(); params.disks = []; for (i = 0; i < chassis.length; i++) { run('select ' + chassis[i]); name = get('name'); run('select disk'); disks = list(); for (j = 0; j < disks.length; j++) { run('select ' + disks[j]); if (get('use') == params.type) { params.disks.push(name + '/' + get('label')); } run('cd ..'); } run('cd ../..'); } if (params.disks.length === 0) throw ('No ' + params.type + ' disks found'); run('cd /'); } }, { step: 'Creating worksheet', execute: function (params) { /* * In this step, we're ready to actually create the worksheet * itself: we have the disks of the specified type and * we know that we can create the worksheet. Note that we * create several datasets: first, I/O bytes broken down * by disk, with each disk of the specified type highlighted * as a drilldown. Then, we create a separate dataset for * each disk of the specified type. Finally, note that we * aren't saving the datasets -- we'll let the user do that * from the created worksheet if they so desire. (It would * be straightforward to add a boolean parameter to this * workflow that allows that last behavior to be optionally * changed.) */ var disks = [], i; run('analytics worksheets'); run('create "' + params.worksheet + '"'); run('select name="' + params.worksheet + '"'); run('dataset'); run('set name=io.bytes[disk]'); for (i = 0; i < params.disks.length; i++) disks.push('"' + params.disks[i] + '"'); run('set drilldowns=' + disks.join(',')); run('commit'); for (i = 0; i < params.disks.length; i++) { run('dataset'); run('set name="io.bytes[disk=' + params.disks[i] + ']"'); run('commit'); } } } ]; var workflow = { name: 'Disk drilldown', description: 'Creates a worksheet that drills down on system, ' + 'cache, or log devices', parameters: { type: { label: 'Create a new worksheet drilling down on', type: 'ChooseOne', options: [ 'cache', 'log', 'system' ], optionlabels: [ 'Cache', 'Log', 'System' ] }, overwrite: { label: 'Overwrite the worksheet if it exists', type: 'Boolean' } }, execute: function (params) { return (steps); } };