JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Guide d'administration des systèmes Oracle® ZFS Storage Appliance
Oracle Technology Network
Bibliothque
PDF
Aperu avant impression
Commentaires
search filter icon
search icon

Informations document

Utilisation de la présente documentation

Chapitre 1 Présentation d'Oracle ZFS Storage Appliance

Chapitre 2 Statut

Chapitre 3 Configuration initiale

Chapitre 4 Configuration réseau

Chapitre 5 Configuration de stockage

Chapitre 6 Configuration du réseau de stockage SAN

Chapitre 7 Configuration utilisateur

Chapitre 8 Définition des préférences de ZFSSA

Chapitre 9 Configuration des alertes

Chapitre 10 Configuration de cluster

Chapitre 11 Services ZFSSA

Chapitre 12 Partages, projets et schéma

Chapitre 13 Réplication

Chapitre 14 Migration shadow

Chapitre 15 Ecriture de scripts à l'aide de la CLI

Chapitre 16 Maintenance des workflows

Utilisation des workflows

Contexte d'exécution des workflows

Paramètres des workflows

Paramètres restreints

Paramètres facultatifs

Gestion des erreurs des workflows

Validation des entrées des workflows

Exécution d'un audit des workflows

Rapports sur l'exécution des workflows

Gestion des versions

Versions de l'appareil

Gestion des versions des workflows

Workflows en tant qu'actions d'alerte

Contexte d'exécution des actions d'alerte

Réalisation d'audits sur les actions d'alerte

Utilisation de workflows programmés

Utilisation de la CLI

Codage du calendrier

Exemple : sélection du type de périphérique

BUI

Interface de ligne de commande

Téléchargement de workflows

Affichage de workflows

Exécution de workflows

Chapitre 17 Intégration

Index

Exemple : sélection du type de périphérique

L'exemple suivant illustre un workflow créant une feuille de travail à partir d'un type de lecteur donné :

var 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); }
};