appliances

structure

The appliance modules are broken up into separate classes by appliance type. Within each appliance type there is a distinct class for each type of connection used:

otto.appliances.vsx.ssh

This is intended to allow alternate connection types such as EL, REST etc, while ensuring the libraries code is clear and well organized.

srx

class otto.appliances.srx.Srx(shelf, iface, password=None, prompt=None, use_slots=None, version=None)[source]

A class for interacting with the SRX using CEC. Since the commands are basically passed through see the SRX manual for more info.

Individual drives may be accessed directly using obj.sNum where Num is the slot number:

>> sr = Srx(shelfnum,'en0')
>> sr.connect()
>> print sr.s1.model
'WD WD6001BKHG-02D22'
cache = None

A dictionary for caching hard data that is otherwise slow to retrieve. Currently there is only ‘drives’ which contains the last run of the drives command.

cecdisable(ifs)[source]

‘ifs’ is expected to be a single interface as a string, or a list of interfaces as strings. Returns a ReturnCode.

Version support: 7

cecenable(ifs)[source]

‘ifs’ is expected to be a single interface as a string, or a list of interfaces as strings. Returns a ReturnCode.

Version support: 7

cecstat

Returns a dictionary containing available interfaces and the cec state for each one (enabled or disabled). For example, this on the CLI:

SRX shelf 43> cecstat
NAME              CEC
ether0       disabled
ether1        enabled
ether2       disabled
ether3       disabled
ether4       disabled
SRX shelf 43>

returns this:

{   'ether0': {   'ifc': 'ether0', 'status': 'disabled'},
    'ether1': {   'ifc': 'ether1', 'status': 'enabled'},
    'ether2': {   'ifc': 'ether2', 'status': 'disabled'},
    'ether3': {   'ifc': 'ether3', 'status': 'disabled'},
    'ether4': {   'ifc': 'ether4', 'status': 'disabled'}}

Version support: 7

close(force=True)
clrvlan(luns, expectation=True)[source]

Clears any vlan id for the given LUN(s).

Version support: 7

cmcheck

The cmcheck command provides cache statistics for both CacheMotion and EtherFlash Cache.

Statistics for Cache level 0 apply to CacheMotion, while statistics for Cache level 1 apply to EtherFlash Cache. See a sample below of the command ouptut.

Parameters: None.

Returns a dictionary representing the data reported by cmcheck, an empty dictionary will be returned if there’s no data to report:

{'0': {'device': [{'blocks_in_cache': '917504',
               'data_blocks': '910164',
               'device_name': '#S/sdS0/data',
               'direct_blocks': '1',
               'emptypos': '6360',
               'first_data_block': '7227',
               'id': '0',
               'metadata_blocks': '7226',
               'super_blocks': '1'}],
       'hit_rate': '75',
       'recent_hit_rate': '75',
       'target': [{'hit_rate': '75',
               'id': '1',
               'in_cache': '910164',
               'recent_hit_rate': '75',
               'working_set': '827524'}]},
 '1': {'device': [{'blocks_in_cache': '335824',
               'blocksize': '131072',
               'data_blocks': '20483',
               'device_name': '/raiddev/0/data',
               'direct_blocks': '0',
               'emptypos': '2',
               'first_data_block': '85',
               'flags': '0100',
               'id': '0',
               'metadata_blocks': '84',
               'read_errors': '0',
               'super_blocks': '1',
               'version': '2',
               'write_errors': '0'},
              {'blocks_in_cache': '335824',
               'blocksize': '131072',
               'data_blocks': '20482',
               'device_name': '/raiddev/3/data',
               'direct_blocks': '0',
               'emptypos': '2',
               'first_data_block': '85',
               'flags': '0100',
               'id': '3',
               'metadata_blocks': '84',
               'read_errors': '0',
               'super_blocks': '1',
               'version': '2',
               'write_errors': '0'}],
       'hit_rate': '98',
       'recent_hit_rate': '100',
       'target': [{'hit_rate': '94',
               'id': '0',
               'in_cache': '8',
               'recent_hit_rate': '25',
               'working_set': '1'},
              {'hit_rate': '98',
               'id': '1',
               'in_cache': '81928',
               'recent_hit_rate': '100',
               'working_set': '8'}]}}
cmdisable(luns, expectation=True)[source]

You can disable NVRAM data protection on a LUN by issuing cmdisable and specifying the LUN. ‘Luns’ is expected to be a string, or a list of strings. Returns a ReturnCode. Version support: 6, 7.

cmenable(luns, expectation=True)[source]

The cmenable command marks specified LUNs for NVRAM data protection and records the LUN serial number on the CacheMotion card. ‘Luns’ is expected to be a string, or a list of strings. Returns a ReturnCode. Version support: 6, 7.

cmlist

Returns a dictionary indicating cache memory status of each existing lun. Version support: 6, 7.

cmlunid

The SSD non-volatile storage device on the CacheMotion card is a LUN with an ID that is 254 by factory default. Issuing cmlunid without arguments displays the CacheMotion LUN ID of the local CacheMotion card.

cmstat

Returns a dictionary indicating cache memory status of each lun:

{
    '3' : 'enabled',
    '10': 'disabled'
}

Version support: 6, 7.

connect(timeout=10, expectation=True)[source]
date

The date command returns a string containing the output of the date command.

debug(setto)[source]
disable_service(service, expectation=True)[source]

Disable a service

Version support: 7

disconnect()

Disconnect from host. This is mostly a formality.

diskmap(lun)[source]

Return a dictionary with the shelf.slot with associated with the raid device index (lun.comp.drive). Returns a dictionary like:

{'84.8':'7.0.0',
'84.2':'7.0.1',
'84.3':'7.0.2'}
disks

Returns a dictionary with information of disks.

disktest(mode, disk, expectation=True)[source]

Destructive read/write test of a drive.

drives

Returns an ordered dict of drive info indexed by slot:

>> sr.drives['0']

{'FW': 'SN04',
 'Model': 'ST9500530NS',
 'SN': '9SP2K7M3',
 'config': None,
 'geometry': '976773168 512',
 'hresets': '0',
 'link': '1.5 Gb/s',
 'r0resets': '0',
 'sstate': 'up',
 'state': 'up',
 'type': 'sata',
 'version': None}
eject(luns, expectation=True)[source]

This will eject one or more luns.

Similar to the remove command, but eject does not clear the RAID config on the component drives of a lun.

Returns a ReturnCode.

ejectlun(luns, expectation=True)[source]

This will eject one or more luns.

enable_service(service, expectation=True)[source]

Enable a service

Version support: 7

expert_run(cmd, expectation=True)[source]
fail(disk, expectation=True)[source]

This will fail the specified drive.

faildrive(drive, expectation=True)[source]

Fail the specified drive. Drive is in lun.part.element format. Returns a ReturnCode.

fans

Returns fan status as a dictionary.

fcadd(slot, pct=None, expectation=True)[source]

The fcadd command adds/configures one or more device(s) as a read cache, in order to significantly improve read performance on frequently acccessed data. Parameters:

drive: the drives to turn into flash cache drives
pct: Allows you to configure the overcommit percentage for the specified
    range of devices. Leaving a percentage of available space unused can
    improve performance and durability of SSDs.

The default overcommit percentage is 20% when not specified.

fcconfig(slot, pct=None, expectation=True)[source]
fcdisable(luns, expectation=True)[source]

The fcdisable command disables read cache functionality for the data on either specified LUNs or all LUNs on the shelf.

Version support: 6, 7

fcenable(luns, expectation=True)[source]
fclundisable(lun, expectation=True)[source]

The fclundisable command disables read cache functionality for the data on either specified LUNs or all LUNs on the shelf.

fclunenable(luns, expectation=True)[source]

The fclunenable commmand enables read cache functionality for the data on specified LUNs.

fclunpriority(lun, pri, pct=None, expectation=True)[source]

The fclunpriority command allows you to specify performance improvement relative to other LUNs as well as the approximate minimum percentage of the cache targeted for the specified LUN. Parameters are expected to be strings:

lun: the lun to affect with the command.
pri: Enter a number from zero to 100. This number is a unitless value
     that specifies performance improvement relative to other LUNs.
pct: Enter a number from one to 100. This number is the approximate
     minimum percentage of the cache targeted for the specified LUN.

Returns a ReturnCode.

fclunstat

Returns a dictionary with the read cache status of all cache LUNs on the shelf.

fcpriority

Reports flash cache performance settings for each lun.

Example:
{
‘9’ : {‘pri’: ‘10’, ‘minpct’: ‘10’}, ‘10’ : {‘pri’: ‘0’, ‘minpct’: ‘0’}, ‘8’ : {‘pri’: ‘10’, ‘minpct’: ‘0’}, ‘200’: {‘pri’: ‘0’, ‘minpct’: ‘0’}

}

fcremove(slot=None, expectation=True)[source]

The fcremove command removes the read cache from the shelf as well as the cache configuration of all affected LUNs. The ‘drives’ argument should be a string specifying either “all”, the specific LUN, or a list of LUNs as strings.

fcstat()[source]

The fcstat command displays the drive and it’s size for each drive whose role is ‘cache’.

flushcachedisable(luns)[source]

‘luns’ is expected to be a single lun as a string, or a list of luns as strings. Returns a ReturnCode.

Version support: 7.0.1-R6 and above

flushcacheenable(luns)[source]

‘luns’ is expected to be a single lun as a string, or a list of luns as strings. Returns a ReturnCode.

Version support: 7.0.1-R6 and above

flushcachestat

Returns a dictionary containing available/provided luns and the flushcache state for each one (enabled or disabled). For example, this on the CLI:

SRX shelf 43> flushcachestat
LUN   FLUSHCACHE
0       disabled
1        enabled
2       disabled
3       disabled
4       disabled
SRX shelf 43>

returns this:

{   '0': {   'lun': '0', 'status': 'disabled'},
    '1': {   'lun': '1', 'status': 'enabled'},
    '2': {   'lun': '2', 'status': 'disabled'},
    '3': {   'lun': '3', 'status': 'disabled'},
    '4': {   'lun': '4', 'status': 'disabled'}}

Version support: 7.0.1-R6 and above

ifstat

Returns a dictionary of interfaces encoded as dictionaries:

{'ether0': {'link': {'current': '1000', 'max': '1000'},
    'mac': '003048b92888',
    'name': 'ether0'},
'ether1': {'link': {'current': '1000', 'max': '1000'},
    'mac': '003048b92889',
    'name': 'ether1'},
'ether2': {'link': {'current': '0', 'max': '10000'},
    'mac': '003048da5b00',
    'name': 'ether2'},
'ether3': {'link': {'current': '0', 'max': '10000'},
    'mac': '003048da5b01',
    'name': 'ether3'}}
iomode

‘Luns’ should either be a string or a list of strings. Return a dictionary with iomode information:

{'0': {'lun': '0', 'mode': 'sequential'},
 '1': {'lun': '1', 'mode': 'random'},
 '2': {'lun': '2', 'mode': 'random'}}
iostats

Returns io statistics for each lun and it’s underlying disks:

{'10': {'id': '10',
  'kind': 'lun',
  'read': {'MB': '0.000', 'avg': '0', 'max': '0'},
  'write': {'MB': '0.000', 'avg': '0', 'max': '0'}},
 '10.0.0': {'id': '10.0.0',
  'kind': 'disk',
  'read': {'MB': '0.677', 'avg': '2', 'max': '15'},
  'write': {'MB': '0.000', 'avg': '0', 'max': '0'}},
 '10.0.1': {'id': '10.0.1',
  'kind': 'disk',
  'read': {'MB': '0.677', 'avg': '1', 'max': '20'},
  'write': {'MB': '0.000', 'avg': '0', 'max': '0'}}
}
ipaddress

The ipaddress command returns a dictionary containing the information of the ipaddress command.

Version support: 7

ipgateway

The ipgateway command returns a string containing the information of the ipgateway command

Version support: 7

jbod(slot, expectation=True, force=True)[source]
label(name, luns, expectation=True)[source]

Place a label on the requested LUN(s). ‘Luns’ is either a string or a list of strings.

list

see otto.appliances.srx.Srx.luns

lunfailguarddisable(lun, expectation=True)[source]

Disable fail guard on specified lun.

lunfailguardenable(lun, expectation=True)[source]

Enable fail guard on specified lun.

luns

Returns a dictionary with the LUNs’ information like so:

{'0': {   'label': 'update_lun',
     'lun': '0',
     'online': False,
     'raids': [],
     'size': '0.067',
     'state': 'normal',
     'status': 'offline',
     'type': 'raw'},

 '1': {   'label': '',
     'lun': '1',
     'online': False,
     'raids': [   {   'components': [   {   'device': '43.0',
                                            'drive': '43.0',
                                            'element': '1.0.0',
                                            'position': '0',
                                            'size': '500.108',
                                            'stat': 'normal',
                                            'state': 'normal'},
                                        {   'device': '43.1',
                                            'drive': '43.1',
                                            'element': '1.0.1',
                                            'position': '1',
                                            'size': '500.108',
                                            'stat': 'normal',
                                            'state': 'normal'},
                                        {   'device': '43.2',
                                            'drive': '43.2',
                                            'element': '1.0.2',
                                            'position': '2',
                                            'size': '500.108',
                                            'stat': 'normal',
                                            'state': 'normal'}]}],
     'size': '1000.216',
     'state': 'initing',
     'status': 'offline',
     'type': 'raid5'}}
make(lun, raidtype, slots='', lunvers=None, clean=False, force=True, expectation=True)[source]
mask

Returns a dictionary with a list of macs per LUN.

maxsize

Maxsize sums the disk capacity in the use_slots list for this SR. It returns the value in bytes.

mkjbod(drive, expectation=True, force=True)[source]
mklun(lun, raidtype, drives=None, lunvers=None, clean=False, force=True, expectation=True)[source]

make a lun clean skips parity build lunvers allows specification of lun format raidtype is not checked but the sr supports:

'jbod', 'raidL', 'raidl', 'raid0',
'raid1', 'raid10', 'raid5', 'raid6rs', 'raw'
mkspare(drives, expectation=True)[source]

‘Drives’ is either a string or a list of strings. Returns a ReturnCode.

model

The model command returns a string containing the srx model.

motd

The motd command returns a string containing the output of the motd command.

Version support: 7

next_release

The next_release command returns a string containing the release that will run upon the user executing the ‘update’ command, after the SRX reboots. If a tarc has been uploaded, but the SRX has not been updated, then there will be two fields, like so:

SRX shelf 43> release
RELEASE       NEXTRELEASE
SRX-7.0.0-R6  SRX-7.0.0-R7
SRX shelf 43>
offline(lun, expectation=True)[source]

This command allows you to place a specific lun offline.

online(lun, expectation=True)[source]

Online a specific lun online.

power

returns the state of the power supplies

Version support: 6, 7

reboot()[source]

Reboot the appliance

Version support: 6, 7.

reconnect(after=10, timeout=None)
release

The release command returns a string containing the currently running release.

On SRX6: the commands only returns a single line with the release already running.

On SRX7 If a tarc has been uploaded, but the SRX has not been updated, then there will be two fields, like so:

SRX shelf 43> release
RELEASE       NEXTRELEASE
SRX-7.0.0-R6  SRX-7.0.0-R7
SRX shelf 43>
remove(luns, expectation=True, force=True)[source]
replace(comp, drive, expectation=True)[source]

Replace a filed drive..

replacedrive(drive, expectation=True, slot=None)[source]

Replace a failed component with a new drive (or possibly itself). comp is expected to be in ‘lun.part.drive’ format. Returns a ReturnCode.

resetdrive(drives, expectation=True)[source]

This is only useful when drives enter a connectfail state. ‘Drives’ is expected to be a string or a list of strings. Returns a ReturnCode.

Version support: 7

restore(oldshelf=None, oldlun=None, newlun=None, flagl=None, expectation=True)[source]

This will restore a lun reading drives’s config in an SRX.

restorelun(oldshelf=None, oldlun=None, newlun=None, flagl=None, expectation=True)[source]

Returns a ReturnCode. usage: restorelun [ -l ] [ oldshelfno [ oldlun [ newlun ] ] ]

Version support: 7

rmfcache(slot=None, expectation=True)[source]
rmlun(luns, expectation=True, force=True)[source]

Remove specified luns. If it/they is/are online, first offline it/them. Returns a ReturnCode.

rmspare(drives, expectation=True)[source]

Removes the spare role from one or more drives in a shelf.

Drives is expected to be either a string, or a list of strings. Returns a ReturnCode. Version support: 6, 7

run(cmd, wait=True, force=False, ans='y', timeout=60)

This is the main command/only real operation. It runs a command and returns the result.

serial

The serial command returns a string containing the srx serial.

service

The service property returns a dictionary of services:

{'ftp': {'name': 'ftp', 'status': 'enabled'},
 'ntp': {'name': 'ntp', 'status': 'disabled'},
 'ssh': {'name': 'ssh', 'status': 'enabled'}}

Version support: 7

setiomode(mode, lun, expectation=True)[source]

Change the io access mode of a lun or list of luns.

setsize(size, drives)[source]

Makes a drive looks lower than or equal to drive size.

size = ‘-c’ means restore the disk to its actual size drives can be a string or a list of strings

setslotled(state, slots, expectation=True)[source]

‘Slots’ is either a string or a list of strings. Returns a ReturnCode

setvlan(vlanid, luns, expectation=True)[source]

Sets the vlanid for the given LUN(s). A valid vlan id is a number between 1 and 4094 (inclusive). ‘Luns’ is either a string or a list of strings. Returns a ReturnCode.

Version support: 7

slotled(slots=None, expectation=True)[source]

‘Slots’ is either a string or a list of strings. Returns a dictionary.

slots = None

Number of slots in this chassis auto determined at connect.

smartdisable(drives, expectation=True)[source]

drives is either a single drive as a string, or a list of drives as strings. drives can also be a series-expanded set of drives as a string, eg: ‘43.0-23’. Returns a ReturnCode.

smartenable(drives, expectation=True)[source]

drives is either a single drive as a string, or a list of drives as strings. drives can also be a series-expanded set of drives as a string, eg: ‘43.0-23’. Returns a ReturnCode.

smartlog(drives=None)[source]

‘Drives’ can either be a string or a list of strings. Returns a dictionary of drives and any associated S.M.A.R.T info.

Version support: 7

sos

Run the sos command, and return the result as a string. Due to the CorOS integration into SRX-7.x, the sos command now returns a single line with an ‘scp’ command that the user can execute on a remote host in order to get a copy of the sos file that was saved to the staging area. Use the otto.lib.srx.sos7() method to take the data returned from this command, and grab the contents of the sos file.

spare(drives, expectation=True)[source]
spareled

Returns a string; either ‘enabled’ or ‘disabled’.

spares

Returns a dictionary of parsed output.

syslog

Returns a dictionary of source, server and local interface:

{'source': '10.176.200.87',
 'server': '10.176.110.1',  # destinantion
 'interface': 'ether0'}
syslogtest(msg, sev=None)[source]

Send a test syslog message

sysstat

Return the utilization of each cpu in a dict:

{'0': {'cpu': '0', 'idle%': '99', 'int%': '0'},
 '1': {'cpu': '1', 'idle%': '99', 'int%': '0'},
 '2': {'cpu': '2', 'idle%': '98', 'int%': '0'},
 '3': {'cpu': '3', 'idle%': '99', 'int%': '0'}}
temp

Returns the state of the shelf’s temperature using srx command temp

timezone

The timezone command returns a string containing the srx timezone.

Version support: 7

timezone_list
timezones

The timezones command returns a list containing the available timezones.

Version support: 7

unfail(disk, expectation=True, slot=None)[source]

Will unfail a drive.

unlabel(luns, expectation=True)[source]

Removes any label from the requested LUN(s). ‘Luns’ is either a string or a list of strings.

update(reboot=True, lun=True, fname=None)[source]

The update command updates the CorOS release on the appliance.

If reboot is True, sets the ‘-r’ flag, and forces a reboot. Either ‘lun’ can be True, or ‘fname’ can be a string of the already scp’d tarc name to use, but both ‘lun’ and ‘fname’ can not be set at the same time. If neither is set, then returns the possibilities for updating, if any. ‘fname’ can be ‘-f’ to get the update code to “find” the update fname. Warning: it will find one (of possibly many) fname in /staging/, so you need to be sure there’s only one there and that it’s the one you want to use.

uptime

Displays the amount of time the appliance has been running since the last reboot.

use_slots = None

a list of slots to restrict operations to.

version = None

This is set to either 6|7 for backwards compatibile operations By default we auto negotioate this upon connection.

vlans(luns=None)[source]

Returns a dictionary of VLANs for the specified LUNs, or all LUNs on the shelf. Any LUN that is not a part of a VLAN gets an empty value in the VLAN column.

Version support: 7

waitnoecho(timeout=-1)
when

Returns a dictionary:

{'lun':'1.0'
'percent': '44.06 '
'rate': '83542.02'
'time':'3:43:15'}
wipe(resetsize='-c')[source]

Remove all luns on this shelf.

class otto.appliances.srx.SrxSsh(user, host, password, prompt=None, use_slots=None)[source]

A class for interacting with the Srx using ssh. Since the commands are basically passed through see the Srx manual for more info.

extended parameters:

expectation     (Boolean) if False the library will not raise exceptions for error: or usage:
force           (Boolean) if True the method walks through the acceptance dialog
cecdisable(ifs)

‘ifs’ is expected to be a single interface as a string, or a list of interfaces as strings. Returns a ReturnCode.

Version support: 7

cecenable(ifs)

‘ifs’ is expected to be a single interface as a string, or a list of interfaces as strings. Returns a ReturnCode.

Version support: 7

cecstat

Returns a dictionary containing available interfaces and the cec state for each one (enabled or disabled). For example, this on the CLI:

SRX shelf 43> cecstat
NAME              CEC
ether0       disabled
ether1        enabled
ether2       disabled
ether3       disabled
ether4       disabled
SRX shelf 43>

returns this:

{   'ether0': {   'ifc': 'ether0', 'status': 'disabled'},
    'ether1': {   'ifc': 'ether1', 'status': 'enabled'},
    'ether2': {   'ifc': 'ether2', 'status': 'disabled'},
    'ether3': {   'ifc': 'ether3', 'status': 'disabled'},
    'ether4': {   'ifc': 'ether4', 'status': 'disabled'}}

Version support: 7

close(force=True)
clrvlan(luns, expectation=True)

Clears any vlan id for the given LUN(s).

Version support: 7

cmcheck

The cmcheck command provides cache statistics for both CacheMotion and EtherFlash Cache.

Statistics for Cache level 0 apply to CacheMotion, while statistics for Cache level 1 apply to EtherFlash Cache. See a sample below of the command ouptut.

Parameters: None.

Returns a dictionary representing the data reported by cmcheck, an empty dictionary will be returned if there’s no data to report:

{'0': {'device': [{'blocks_in_cache': '917504',
               'data_blocks': '910164',
               'device_name': '#S/sdS0/data',
               'direct_blocks': '1',
               'emptypos': '6360',
               'first_data_block': '7227',
               'id': '0',
               'metadata_blocks': '7226',
               'super_blocks': '1'}],
       'hit_rate': '75',
       'recent_hit_rate': '75',
       'target': [{'hit_rate': '75',
               'id': '1',
               'in_cache': '910164',
               'recent_hit_rate': '75',
               'working_set': '827524'}]},
 '1': {'device': [{'blocks_in_cache': '335824',
               'blocksize': '131072',
               'data_blocks': '20483',
               'device_name': '/raiddev/0/data',
               'direct_blocks': '0',
               'emptypos': '2',
               'first_data_block': '85',
               'flags': '0100',
               'id': '0',
               'metadata_blocks': '84',
               'read_errors': '0',
               'super_blocks': '1',
               'version': '2',
               'write_errors': '0'},
              {'blocks_in_cache': '335824',
               'blocksize': '131072',
               'data_blocks': '20482',
               'device_name': '/raiddev/3/data',
               'direct_blocks': '0',
               'emptypos': '2',
               'first_data_block': '85',
               'flags': '0100',
               'id': '3',
               'metadata_blocks': '84',
               'read_errors': '0',
               'super_blocks': '1',
               'version': '2',
               'write_errors': '0'}],
       'hit_rate': '98',
       'recent_hit_rate': '100',
       'target': [{'hit_rate': '94',
               'id': '0',
               'in_cache': '8',
               'recent_hit_rate': '25',
               'working_set': '1'},
              {'hit_rate': '98',
               'id': '1',
               'in_cache': '81928',
               'recent_hit_rate': '100',
               'working_set': '8'}]}}
cmdisable(luns, expectation=True)

You can disable NVRAM data protection on a LUN by issuing cmdisable and specifying the LUN. ‘Luns’ is expected to be a string, or a list of strings. Returns a ReturnCode. Version support: 6, 7.

cmenable(luns, expectation=True)

The cmenable command marks specified LUNs for NVRAM data protection and records the LUN serial number on the CacheMotion card. ‘Luns’ is expected to be a string, or a list of strings. Returns a ReturnCode. Version support: 6, 7.

cmlist

Returns a dictionary indicating cache memory status of each existing lun. Version support: 6, 7.

cmlunid

The SSD non-volatile storage device on the CacheMotion card is a LUN with an ID that is 254 by factory default. Issuing cmlunid without arguments displays the CacheMotion LUN ID of the local CacheMotion card.

cmstat

Returns a dictionary indicating cache memory status of each lun:

{
    '3' : 'enabled',
    '10': 'disabled'
}

Version support: 6, 7.

connect(timeout=40, args=None)[source]

Calls Ssh’s connection method which will connect to and authenticate with host

date

The date command returns a string containing the output of the date command.

debug(setto)
disable_service(service, expectation=True)

Disable a service

Version support: 7

disconnect()[source]

Calls Ssh’s disconnect method

diskmap(lun)

Return a dictionary with the shelf.slot with associated with the raid device index (lun.comp.drive). Returns a dictionary like:

{'84.8':'7.0.0',
'84.2':'7.0.1',
'84.3':'7.0.2'}
disks

Returns a dictionary with information of disks.

disktest(mode, disk, expectation=True)

Destructive read/write test of a drive.

drives

Returns an ordered dict of drive info indexed by slot:

>> sr.drives['0']

{'FW': 'SN04',
 'Model': 'ST9500530NS',
 'SN': '9SP2K7M3',
 'config': None,
 'geometry': '976773168 512',
 'hresets': '0',
 'link': '1.5 Gb/s',
 'r0resets': '0',
 'sstate': 'up',
 'state': 'up',
 'type': 'sata',
 'version': None}
eject(luns, expectation=True)

This will eject one or more luns.

Similar to the remove command, but eject does not clear the RAID config on the component drives of a lun.

Returns a ReturnCode.

ejectlun(luns, expectation=True)

This will eject one or more luns.

enable_service(service, expectation=True)

Enable a service

Version support: 7

expert_run(cmd, expectation=True)
fail(disk, expectation=True)

This will fail the specified drive.

faildrive(drive, expectation=True)

Fail the specified drive. Drive is in lun.part.element format. Returns a ReturnCode.

fans

Returns fan status as a dictionary.

fcadd(slot, pct=None, expectation=True)

The fcadd command adds/configures one or more device(s) as a read cache, in order to significantly improve read performance on frequently acccessed data. Parameters:

drive: the drives to turn into flash cache drives
pct: Allows you to configure the overcommit percentage for the specified
    range of devices. Leaving a percentage of available space unused can
    improve performance and durability of SSDs.

The default overcommit percentage is 20% when not specified.

fcconfig(slot, pct=None, expectation=True)
fcdisable(luns, expectation=True)

The fcdisable command disables read cache functionality for the data on either specified LUNs or all LUNs on the shelf.

Version support: 6, 7

fcenable(luns, expectation=True)
fclundisable(lun, expectation=True)

The fclundisable command disables read cache functionality for the data on either specified LUNs or all LUNs on the shelf.

fclunenable(luns, expectation=True)

The fclunenable commmand enables read cache functionality for the data on specified LUNs.

fclunpriority(lun, pri, pct=None, expectation=True)

The fclunpriority command allows you to specify performance improvement relative to other LUNs as well as the approximate minimum percentage of the cache targeted for the specified LUN. Parameters are expected to be strings:

lun: the lun to affect with the command.
pri: Enter a number from zero to 100. This number is a unitless value
     that specifies performance improvement relative to other LUNs.
pct: Enter a number from one to 100. This number is the approximate
     minimum percentage of the cache targeted for the specified LUN.

Returns a ReturnCode.

fclunstat

Returns a dictionary with the read cache status of all cache LUNs on the shelf.

fcpriority

Reports flash cache performance settings for each lun.

Example:
{
‘9’ : {‘pri’: ‘10’, ‘minpct’: ‘10’}, ‘10’ : {‘pri’: ‘0’, ‘minpct’: ‘0’}, ‘8’ : {‘pri’: ‘10’, ‘minpct’: ‘0’}, ‘200’: {‘pri’: ‘0’, ‘minpct’: ‘0’}

}

fcremove(slot=None, expectation=True)

The fcremove command removes the read cache from the shelf as well as the cache configuration of all affected LUNs. The ‘drives’ argument should be a string specifying either “all”, the specific LUN, or a list of LUNs as strings.

fcstat()

The fcstat command displays the drive and it’s size for each drive whose role is ‘cache’.

flushcachedisable(luns)

‘luns’ is expected to be a single lun as a string, or a list of luns as strings. Returns a ReturnCode.

Version support: 7.0.1-R6 and above

flushcacheenable(luns)

‘luns’ is expected to be a single lun as a string, or a list of luns as strings. Returns a ReturnCode.

Version support: 7.0.1-R6 and above

flushcachestat

Returns a dictionary containing available/provided luns and the flushcache state for each one (enabled or disabled). For example, this on the CLI:

SRX shelf 43> flushcachestat
LUN   FLUSHCACHE
0       disabled
1        enabled
2       disabled
3       disabled
4       disabled
SRX shelf 43>

returns this:

{   '0': {   'lun': '0', 'status': 'disabled'},
    '1': {   'lun': '1', 'status': 'enabled'},
    '2': {   'lun': '2', 'status': 'disabled'},
    '3': {   'lun': '3', 'status': 'disabled'},
    '4': {   'lun': '4', 'status': 'disabled'}}

Version support: 7.0.1-R6 and above

ifstat

Returns a dictionary of interfaces encoded as dictionaries:

{'ether0': {'link': {'current': '1000', 'max': '1000'},
    'mac': '003048b92888',
    'name': 'ether0'},
'ether1': {'link': {'current': '1000', 'max': '1000'},
    'mac': '003048b92889',
    'name': 'ether1'},
'ether2': {'link': {'current': '0', 'max': '10000'},
    'mac': '003048da5b00',
    'name': 'ether2'},
'ether3': {'link': {'current': '0', 'max': '10000'},
    'mac': '003048da5b01',
    'name': 'ether3'}}
iomode

‘Luns’ should either be a string or a list of strings. Return a dictionary with iomode information:

{'0': {'lun': '0', 'mode': 'sequential'},
 '1': {'lun': '1', 'mode': 'random'},
 '2': {'lun': '2', 'mode': 'random'}}
iostats

Returns io statistics for each lun and it’s underlying disks:

{'10': {'id': '10',
  'kind': 'lun',
  'read': {'MB': '0.000', 'avg': '0', 'max': '0'},
  'write': {'MB': '0.000', 'avg': '0', 'max': '0'}},
 '10.0.0': {'id': '10.0.0',
  'kind': 'disk',
  'read': {'MB': '0.677', 'avg': '2', 'max': '15'},
  'write': {'MB': '0.000', 'avg': '0', 'max': '0'}},
 '10.0.1': {'id': '10.0.1',
  'kind': 'disk',
  'read': {'MB': '0.677', 'avg': '1', 'max': '20'},
  'write': {'MB': '0.000', 'avg': '0', 'max': '0'}}
}
ipaddress

The ipaddress command returns a dictionary containing the information of the ipaddress command.

Version support: 7

ipgateway

The ipgateway command returns a string containing the information of the ipgateway command

Version support: 7

jbod(slot, expectation=True, force=True)
label(name, luns, expectation=True)

Place a label on the requested LUN(s). ‘Luns’ is either a string or a list of strings.

list

see otto.appliances.srx.Srx.luns

lunfailguarddisable(lun, expectation=True)

Disable fail guard on specified lun.

lunfailguardenable(lun, expectation=True)

Enable fail guard on specified lun.

luns

Returns a dictionary with the LUNs’ information like so:

{'0': {   'label': 'update_lun',
     'lun': '0',
     'online': False,
     'raids': [],
     'size': '0.067',
     'state': 'normal',
     'status': 'offline',
     'type': 'raw'},

 '1': {   'label': '',
     'lun': '1',
     'online': False,
     'raids': [   {   'components': [   {   'device': '43.0',
                                            'drive': '43.0',
                                            'element': '1.0.0',
                                            'position': '0',
                                            'size': '500.108',
                                            'stat': 'normal',
                                            'state': 'normal'},
                                        {   'device': '43.1',
                                            'drive': '43.1',
                                            'element': '1.0.1',
                                            'position': '1',
                                            'size': '500.108',
                                            'stat': 'normal',
                                            'state': 'normal'},
                                        {   'device': '43.2',
                                            'drive': '43.2',
                                            'element': '1.0.2',
                                            'position': '2',
                                            'size': '500.108',
                                            'stat': 'normal',
                                            'state': 'normal'}]}],
     'size': '1000.216',
     'state': 'initing',
     'status': 'offline',
     'type': 'raid5'}}
make(lun, raidtype, slots='', lunvers=None, clean=False, force=True, expectation=True)
mask

Returns a dictionary with a list of macs per LUN.

maxsize

Maxsize sums the disk capacity in the use_slots list for this SR. It returns the value in bytes.

mkjbod(drive, expectation=True, force=True)
mklun(lun, raidtype, drives=None, lunvers=None, clean=False, force=True, expectation=True)

make a lun clean skips parity build lunvers allows specification of lun format raidtype is not checked but the sr supports:

'jbod', 'raidL', 'raidl', 'raid0',
'raid1', 'raid10', 'raid5', 'raid6rs', 'raw'
mkspare(drives, expectation=True)

‘Drives’ is either a string or a list of strings. Returns a ReturnCode.

model

The model command returns a string containing the srx model.

motd

The motd command returns a string containing the output of the motd command.

Version support: 7

next_release

The next_release command returns a string containing the release that will run upon the user executing the ‘update’ command, after the SRX reboots. If a tarc has been uploaded, but the SRX has not been updated, then there will be two fields, like so:

SRX shelf 43> release
RELEASE       NEXTRELEASE
SRX-7.0.0-R6  SRX-7.0.0-R7
SRX shelf 43>
offline(lun, expectation=True)

This command allows you to place a specific lun offline.

online(lun, expectation=True)

Online a specific lun online.

power

returns the state of the power supplies

Version support: 6, 7

reboot()

Reboot the appliance

Version support: 6, 7.

reconnect(after=10, timeout=40, attempts=10)[source]

Calls Ssh’s reconnection method which will reconnect to and authenticate with host

release

The release command returns a string containing the currently running release.

On SRX6: the commands only returns a single line with the release already running.

On SRX7 If a tarc has been uploaded, but the SRX has not been updated, then there will be two fields, like so:

SRX shelf 43> release
RELEASE       NEXTRELEASE
SRX-7.0.0-R6  SRX-7.0.0-R7
SRX shelf 43>
remove(luns, expectation=True, force=True)
replace(comp, drive, expectation=True)

Replace a filed drive..

replacedrive(drive, expectation=True, slot=None)

Replace a failed component with a new drive (or possibly itself). comp is expected to be in ‘lun.part.drive’ format. Returns a ReturnCode.

resetdrive(drives, expectation=True)

This is only useful when drives enter a connectfail state. ‘Drives’ is expected to be a string or a list of strings. Returns a ReturnCode.

Version support: 7

restore(oldshelf=None, oldlun=None, newlun=None, flagl=None, expectation=True)

This will restore a lun reading drives’s config in an SRX.

restorelun(oldshelf=None, oldlun=None, newlun=None, flagl=None, expectation=True)

Returns a ReturnCode. usage: restorelun [ -l ] [ oldshelfno [ oldlun [ newlun ] ] ]

Version support: 7

rmfcache(slot=None, expectation=True)
rmlun(luns, expectation=True, force=True)

Remove specified luns. If it/they is/are online, first offline it/them. Returns a ReturnCode.

rmspare(drives, expectation=True)

Removes the spare role from one or more drives in a shelf.

Drives is expected to be either a string, or a list of strings. Returns a ReturnCode. Version support: 6, 7

run(cmd, wait=True, timeout=10)

This is the main command only real operation. It runs a command and returns the result.

serial

The serial command returns a string containing the srx serial.

service

The service property returns a dictionary of services:

{'ftp': {'name': 'ftp', 'status': 'enabled'},
 'ntp': {'name': 'ntp', 'status': 'disabled'},
 'ssh': {'name': 'ssh', 'status': 'enabled'}}

Version support: 7

setiomode(mode, lun, expectation=True)

Change the io access mode of a lun or list of luns.

setsize(size, drives)

Makes a drive looks lower than or equal to drive size.

size = ‘-c’ means restore the disk to its actual size drives can be a string or a list of strings

setslotled(state, slots, expectation=True)

‘Slots’ is either a string or a list of strings. Returns a ReturnCode

setvlan(vlanid, luns, expectation=True)

Sets the vlanid for the given LUN(s). A valid vlan id is a number between 1 and 4094 (inclusive). ‘Luns’ is either a string or a list of strings. Returns a ReturnCode.

Version support: 7

slotled(slots=None, expectation=True)

‘Slots’ is either a string or a list of strings. Returns a dictionary.

smartdisable(drives, expectation=True)

drives is either a single drive as a string, or a list of drives as strings. drives can also be a series-expanded set of drives as a string, eg: ‘43.0-23’. Returns a ReturnCode.

smartenable(drives, expectation=True)

drives is either a single drive as a string, or a list of drives as strings. drives can also be a series-expanded set of drives as a string, eg: ‘43.0-23’. Returns a ReturnCode.

smartlog(drives=None)

‘Drives’ can either be a string or a list of strings. Returns a dictionary of drives and any associated S.M.A.R.T info.

Version support: 7

sos

Run the sos command, and return the result as a string. Due to the CorOS integration into SRX-7.x, the sos command now returns a single line with an ‘scp’ command that the user can execute on a remote host in order to get a copy of the sos file that was saved to the staging area. Use the otto.lib.srx.sos7() method to take the data returned from this command, and grab the contents of the sos file.

spare(drives, expectation=True)
spareled

Returns a string; either ‘enabled’ or ‘disabled’.

spares

Returns a dictionary of parsed output.

syslog

Returns a dictionary of source, server and local interface:

{'source': '10.176.200.87',
 'server': '10.176.110.1',  # destinantion
 'interface': 'ether0'}
syslogtest(msg, sev=None)

Send a test syslog message

sysstat

Return the utilization of each cpu in a dict:

{'0': {'cpu': '0', 'idle%': '99', 'int%': '0'},
 '1': {'cpu': '1', 'idle%': '99', 'int%': '0'},
 '2': {'cpu': '2', 'idle%': '98', 'int%': '0'},
 '3': {'cpu': '3', 'idle%': '99', 'int%': '0'}}
temp

Returns the state of the shelf’s temperature using srx command temp

timezone

The timezone command returns a string containing the srx timezone.

Version support: 7

timezone_list
timezones

The timezones command returns a list containing the available timezones.

Version support: 7

unfail(disk, expectation=True, slot=None)

Will unfail a drive.

unlabel(luns, expectation=True)

Removes any label from the requested LUN(s). ‘Luns’ is either a string or a list of strings.

update(reboot=True, lun=True, fname=None)

The update command updates the CorOS release on the appliance.

If reboot is True, sets the ‘-r’ flag, and forces a reboot. Either ‘lun’ can be True, or ‘fname’ can be a string of the already scp’d tarc name to use, but both ‘lun’ and ‘fname’ can not be set at the same time. If neither is set, then returns the possibilities for updating, if any. ‘fname’ can be ‘-f’ to get the update code to “find” the update fname. Warning: it will find one (of possibly many) fname in /staging/, so you need to be sure there’s only one there and that it’s the one you want to use.

uptime

Displays the amount of time the appliance has been running since the last reboot.

vlans(luns=None)

Returns a dictionary of VLANs for the specified LUNs, or all LUNs on the shelf. Any LUN that is not a part of a VLAN gets an empty value in the VLAN column.

Version support: 7

waitnoecho(timeout=-1)
when

Returns a dictionary:

{'lun':'1.0'
'percent': '44.06 '
'rate': '83542.02'
'time':'3:43:15'}
wipe(resetsize='-c')

Remove all luns on this shelf.

vsx

class otto.appliances.vsx.Vsx(user, host, password, prompt=None)[source]

A class for interacting with the vsx using ssh. Since the commands are basically passed through see the vsx manual for more info.

extended parameters:

expectation     (Boolean) if False the library will not raise exceptions for error: or usage:
force           (Boolean) if True the method walks through the acceptance dialog
aoediscover()[source]
aoeflush()[source]
aoestat

Returns a dictionary of aoe targets encoded as dictionaries eg.:

{'8.8': {'address': {'shelf': '8', 'slot': '8'},
        'config': '',
        'ifaces': ['ether2,', 'ether6'],
        'paths': [{'iface': 'ether2', 'mac': '003048b92888'},
                  {'iface': 'ether6', 'mac': '003048b92888'},
                  {'iface': 'ether2', 'mac': '003048b92889'},
                  {'iface': 'ether6', 'mac': '003048b92889'}],
        'size': '80.026'},
'8.9': {'address': {'shelf': '8', 'slot': '9'},
        'config': '',
        'ifaces': ['ether2,', 'ether6'],
        'paths': [{'iface': 'ether2', 'mac': '003048b92888'},
                  {'iface': 'ether6', 'mac': '003048b92888'},
                  {'iface': 'ether2', 'mac': '003048b92889'},
                  {'iface': 'ether6', 'mac': '003048b92889'}],
        'size': '80.026'}}
brkmirror(pv, expectation=True, srx=None)[source]

similar to unmirror, but it will set the primary half of the mirror to the broken state. The xlate config file will also be updated.

build

Return urrent running build string

certhash
check_sr_masks(srx, pv)[source]

VSX ether0 & ether1 are IP interfaces, and should not exist in the SAN mac list. All other VSX ports should exist in the list. Other macs in the list must be ignored here, as they may be from a VSX in an HA relationship with this one (self).

clone(original, new, expectation=True)[source]

Makes a read/writable copy of the LV at a precise time, returns ReturnCode object

close(force=True)
clrpvmeta(pv, expectation=True)[source]

clears the first 8k of an AoE target. If a user sets up a VSX, adds PVs, and then issues factoryreset, old metadata will be left on the PVs. To reuse the PVs the user must issue clrpvmeta.

  • as of release 1.5.0 the clrpvmeta cmd changed to a hidden cmd if running an older release we fall back gracefully.
connect(timeout=40, args=None)[source]

Calls parent’s connection method which will connect to and authenticate with host

date
disconnect()

Disconnect from host. This is mostly a formality.

expert_run(cmd)[source]
hapeers

Returns a dictionary of all accessible peers in the SAN. format:

{'15008' : {
        'shelf': "15008",
        'addr': "5100002590602bea",
        'model': "VSX3500-G6"
       },
'15024' : {
        'shelf': "15024",
        'addr': "51000025903b3ee6",
        'model': "VSX3500-G6"
       }
}
harole
hastate
hastatus()[source]

Returns a dictionary:

{'peer': None,
'remotestate': None,
'role': None,
'state': None,
'status': None}

containing the high availability status

ifstat

Returns a dictionary of interfaces encoded as dictionaries. e.g.:

{'ether0':{'link': {'current': '1000', 'max': '1000'},
            'mac': '0025900a856c',
            'name': 'ether0'},
'ether1':{'link': {'current': '0', 'max': '1000'},
            'mac': '0025900a856d',
            'name': 'ether1'}}
ipaddress

Returns a list of ip capable interfaces encoded as dictionaries. e.g.:

{'ether0':{'link': {'current': '1000', 'max': '1000'},
            'mac': '0025900a856c',
            'name': 'ether0',
            'ip':'10.1.1.1'},
  'ether1':{'link': {'current': '0', 'max': '1000'},
            'mac': '0025900a856d',
            'name': 'ether1',
            'ip' : None}}
ipgateway

Returns a string if set and None if unset

luns
lvresize(size, lv, expectation=True)[source]

Increases the size of the specified LV. returns ReturnCode object

lvs

Returns a dictionary of lvs encoded as dictionaries. e.g.:

{'storage1':{'lun': {'shelf': '1504', 'slot': '1'},
  'lv': 'storage1',
  'masks': '0',
  'mode': 'r/w',
  'size': '159.000',
  'status': 'offline'}}

If an lv (name) is specified only that lv, if found is returned. If a specified lv is returned and is not found an empty dict is returned.

lvsnaps
mask
memchk()[source]

Write ‘memchk’ into the xlate/ctl file:

memstir(msec=0)[source]

If msec == 0, then kills the memstir process, otherwise set the max range for the memstir process’ random sleep.

mirror(pv, target, wait=False, expectation=True, srx=None)[source]

Mirror a PV to a target LUN. If srx is not None, verify that the VSX set the masks for this PV on the SRX correctly.

mklegacy(lv, pool, target, expectation=True)[source]

hidden command, Legacy luns are needed when a user has a physical volume they must import directly into a VSX. The PV is added and an LV is created in one shot. The entire volume holds user data. There is no room for PV metadata, which is stored on another PV in the pool.

mklun(lv, lun, expectation=True)[source]

assign a VSX LUN (shelf.lun) to an LV. Only one VSX LUN can be assigned to an LV. When using the mklun command, the LUN is entered in a shelf.lun format returns ReturnCode object

mklv(pool, size, lvname, thin=False, expectation=True)[source]

Returns a ReturnCode.

mkpool(poolname, expectation=True, striped=False)[source]

Creates a pool with the name secified by poolname. Returns a Boolean.

mkpv(pool, target, expectation=True, srx=None)[source]

Adds the specified target to a pool. Returns a Boolean. If srx is not None, verify that the VSX set the masks for this PV on the SRX correctly.

model

Returns the VSX model as a string.

offline(lun, expectation=True)[source]

Disables SAN access for one or more specified VSX LUN(s).

online(lun, expectation=True)[source]

Enables SAN access for one or more VSX LUNs.

pools

Returns a dictionary of pools encoded as dictionaries. e.g.:

{'tidal': {'fextents': '19096',
           'free': '80.094',
           'lvs': ['one', 'two', 'three', 'four'],
           'name': 'mypool',
           'pvlist': ['8.0', '8.1', '8.2', '8.3', '8.4', '8.5'],
           'pvs': '6',
           'size': '480.139',
           'textents': '114474',
           'uextents': '95372'}}
promote(pv, expectation=True)[source]

promotes the SR/SRX LUN (mirrored target) to the primary PV, essentially switching the order of the mirror connection. This is useful for taking an SR/SRX LUN out of service. returns ReturnCode object

pvs

If supplied, ‘self.use_pvs’ should be a list of strings of the form:

[ '8.1', '8.2', '8.3' ]

Returns a dictionary of pvs encoded as dictionaries where the key is the pv number:

{'8.1': {'dexents': '2',
         'fexents': '19052',
         'free': '79.910',
         'mextents': '1',
         'mirror': None,
         'pool': 'recover',
         'pv': '8.1',
         'size': '80.026',
         'stat': 'single',
         'texents': '19079'},
 '8.2': {'dexents': '1',
         'fexents': '19078',
         'free': '80.019',
         'mextents': '0',
         'mirror': None,
         'pool': 'recover',
         'pv': '8.2',
         'size': '80.026',
         'stat': 'single',
         'texents': '19079'}}
reboot()[source]

Shuts down the VSX core service then reboots the VSX appliance.

reconnect(after=10, timeout=None, nolog=False)

reconnect to the host:

after how long to wait for the first attempt
timeout how long to wait for each attempt
release

Returns a string containing the currently running CorOS release.

remote
revalidate()[source]

Mostly used to clear insurgent detection cache

rmlun(lun, expectation=True)[source]

disassociates one VSX LUN from the associated LV. The VSX LUN must first be placed offline before it can be removed. returns ReturnCode object

rmlv(lv, expectation=True)[source]

Returns a Boolean.

rmpool(poolname, expectation=True)[source]

Removes the specified pool. Returns a ReturnCode.

rmpv(pv, expectation=True, srx=None)[source]

Remove the specified target from a pool. Returns a Boolean. If srx is not None, verify that the VSX removed the masks for this PV on the SRX correctly.

rollback(lv, snap=None)[source]

The rollback command is used to set an LV back to a known good state using a specified snapshot. Specifically, the rollback command will first sets the LV to match a specified snapshot; then removes any snapshots created after the specified snapshot returns ReturnCode object

run(cmd, wait=True, timeout=10)

This is the main command only real operation. It runs a command and returns the result.

sanaddr

Sanaddr is the new address used for HA configurations, instead of the IP address. It is actually the EL address.

security

Returns a dictionary of the security parameters for all remote VSXen.

service
set_memflags(flags)[source]

Write ‘memflag $flags’ into the xlate/ctl file:

setpoolmode(pool, mode, expectation=True)[source]

Sets pool mode. Returns a ReturnCode.

setremote(remote, primary=None, secondary=None, expectation=True)[source]

Links a single VSX or a VSX HA pair by providing primary and secondary IP address to one remote name (RNAME). RNAME is a local abstract name used to identify the remote VSX/VSX HA pair. The RNAME is then used in the shadowrecv and shadowsend commands to configure LV shadow replication. returns ReturnCode object

setsecurity(address, encrypt=None, certhash=None, expectation=True)[source]

Sets security information for a remote VSX at IP address.

setshadowretain(cl, retain, lv, expectation=True)[source]
setsnaplimit(size, lv, expectation=True)[source]

sets the potential snapshot storage limit for an LV. returns ReturnCode object

setsnapsched(sclass, when, retain, lv, expectation=True)[source]

sets the schedule for automated snapshots of one or more LVs. returns ReturnCode object

shadow(src_lv, trg_lun, expectation=True)[source]
Asynchronous read-only copy of a snapshot to a second VSX LV.
returns ReturnCode object
shadowrecv(remote, src, dest, expectation=True)[source]

Make LV a shadow target for receiving snapshots from the src at the remote VSX-pair RNAME and dest lv. returns ReturnCode object

shadowretain(lv=None, expectation=True)[source]
shadowsend(remote, src, dest, expectation=True)[source]

estblishes a shadow connection between the source LV and the target LV. The source LV sends snapshots to a designated LV on the target VSX. returns ReturnCode object

shelf
snap(lv, expectation=True)[source]
Creates manual snapshots for one or more LVs.
returns ReturnCode object
snaplimit

Returns a dictionary of snaplimits:

{'temp': { 'limit': 'unset',
           'lv': 'temp',
           'used': '0.000'},
'xfer': {'limit': 'ignore',
          'lv': 'xfer',
          'used': '0.000'}}
sos
strict
syslog

Returns a dictionary:

{'source': None, 'server': None}
syslogtest(msg)[source]

The syslogtest command generates a syslog message to the configured syslog server (see ‘help syslog’). The message is comprised of all arguments concatenated into a single string.

usage: syslogtest msg

timesource
timezone
timezones
unmirror(pv, expectation=True, srx=None)[source]

Unmirrors the target from the PV. If srx is not None, verify that the VSX removed the masks for the target LUN, but left those for this PV correctly.

unshadow(lv, expectation=True)[source]

removes the shadowrecv or shadowsend connection configured between a source LV and a target LV. It removes one side of the connection depending on where the command is issued (VSX source or VSX target). returns ReturnCode object

update(pkg)[source]

update the CorOS on the VSX (CorOS + VSX appliance specific functionality).

waitnoecho(timeout=-1)
wipe(srx=None)[source]

Removes everything xlate: shadows, luns, lvs, snaps, pools, etc.