This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

VERSION: 0.3.0

A minimalist Python library to manage VNX/Unity systems. This document lies in the source code and go with the release. Check different release branch/tag for matched documents.

Installation

You could use “pip” to install “storops”.

$ pip install storops

Make sure naviseccli is installed if you want to manage VNX.

PIP Install Failed?

If you have trouble install the lxml dependency. Please try to set environment variable STATICBUILD to true on your platform.

If you are on windows, you could also download and install the wheel version of lxml here.

Feature List

  • Manage VNX System
    • supported resources
      • show system properties
      • list installed features
      • list/create/delete storage pools
      • list/create/delete pool based LUN
      • list/create/delete RAID groups
      • list/create/delete snapshots
      • list/create/delete storage groups
      • list/create/delete consistency groups
      • list/create/delete users
      • list disks
      • list ports
      • list data mover/virtual data mover
      • list NAS storage pool
      • list/create/delete CIFS server
      • list CIFS share
      • list/create/delete file system
      • list/create/delete file system snap
      • list/create/delete NFS share
      • show system domain information
      • list hosts
      • show system capacity
    • supported feature/operations
      • list/start/cancel migration sessions
      • enable/disable LUN deduplication
      • enable/disable LUN compression
      • insert/delete disk simulation
      • create/attach/detach mount points
      • initiator and connection management
      • create/delete mirror view
      • create/delete DNS
  • Manage Unity System
    • supported resources
      • show system properties
      • list storage pools
      • list/create/delete remote hosts
      • list/create/delete host initiator
      • list/create/delete luns
      • list/create/delete file systems
      • list/create/delete snapshots
      • list/create/delete NAS servers
      • list/create/delete CIFS servers
      • list/create/delete CIFS shares
      • list/create/delete NFS servers
      • list/create/delete NFS shares
      • list/create/delete DNS servers
      • list ip ports.
      • list/create/delete link aggregations
      • list/create/delete Consistency Groups
      • list/create/delete metric real time query
      • list metrics query result
      • list disks
    • supported feature/operations
      • CIFS share access control
      • NFS share access control
      • Remote hosts access
      • Persist historical metric data to csv files
    • supported metrics
      • disk
        • read IOPS
        • write IOPS
        • read bandwidth
        • write bandwidth
        • utilization
      • lun
        • read IOPS
        • write IOPS
        • read bandwidth
        • write bandwidth
        • utilization
      • filesystem
        • read IOPS
        • write IOPS
        • read bandwidth
        • write bandwidth
      • storage processor
        • net in bandwidth
        • net out bandwidth
        • block read IOPS
        • block write IOPS
        • block read bandwidth
        • block write bandwidth
        • CIFS read IOPS
        • CIFS write IOPS
        • CIFS read bandwidth
        • CIFS write bandwidth
        • NFS read IOPS
        • NFS write IOPS
        • NFS read bandwidth
        • NFS write bandwidth
        • utilization
        • block cache read hit ratio
        • block cache write hit ratio

Tutorial

User may reference three kinds of classes directly. All of them are available under the storops module.

  • system classes: like VNXSystem and UnitySystem
  • exceptions: like UnityException, VNXException, etc.
  • enums: like VNXProvisionEnum, NFSTypeEnum, etc.

We recommend to try the library with IPython notebook or shell.

All operation/resource are accessed from the system instance.

Here are some examples of the typical usage:

Get the VNX System Instance

Use the vnx instance to access all sorts of resource and features.

# initialize the VNX system instance
>>> from storops import VNXSystem
>>> vnx = VNXSystem('10.1.1.1', 'sysadmin', 'password')
>>> vnx
{
    "VNXSystem": {
        "existed": true,
        "hash": 5339308,
        "name": "K10",
        "agent_rev": "7.33.8 (2.97)",
        "model_type": "Rackmount",
        "model": "VNX5800",
        "serial": "APM00123456789",
        "revision": "05.33.008.3.297"
    }
}

Get the Unity System Instance

from storops import UnitySystem
unity = UnitySystem('<management ip>', '<user>', '<password>')

Get Resources from System or Other Resources

# get all pools
>>> pools = vnx.get_pool()
{
"VNXPoolList": [
    {
        "VNXPool": {
            "luns": [
                1,
                0
            ],
            "status": "OK(0x0)",
            "current_operation_status": "N/A",
            ...
            "disks": {
                "VNXDiskList": [
                    {
                        "VNXDisk": {
                            "private": {},
                            "clariion_tla_part_number": "005050344PWR",
                            "prct_bound": {},
...

Get a Resource

Attention: you could still initialize the python object even if the resource doesn’t exists on array. You could use the “existed” property to check the existance of the resource.

# get a existing LUN
>>> lun = vnx.get_lun(lun_id=1)
>>> lun
{
    "VNXLun": {
        "status": "OK(0x0)",
        "existed": true,
        ...
        "default_owner": "VNXSPEnum.SP_B",
        "name": "l0"
    }
}

# get a non-existing lun
>>> vnx.get_lun(name='hello')
{
    "VNXLun": {
        "existed": false,
        "hash": 5699430
    }
}

Access Resource Properties

Each properties printed in the json output could be accessed directly.

# access resource properties
>>> lun.status
u'OK(0x0)'

Update the Resource Property

All properties of a resource will be updated if any of them is accessed. For performance concern, the lib won’t send query to array once properties are initialized. Explicitly call the “update()” function if you need a refresh.

>>> vnx = VNXSystem('10.1.1.3')     # no query to the system
>>> vnx.model
u'VNX5800'                          # send query, initialize all properties
>>> vnx.name
u'k10'                              # no query
>>> vnx.update()                    # send query, update all properties

Executing Operations

Most of the create/modify operations can be found on the instance. Call these instance methods to execute the operation.

# create lun
>>> pool = pools[0]
>>> lun1 = pool.create_lun('lun1', size_gb=2)

Remove a Resource

# delete a resource
>>> lun1.delete()

Getting Help

  • If you are using IPython, use “?” to check the document and method signature.
>>> pool.create_lun?
Signature: pool.create_lun(lun_name=None, size_gb=1, lun_id=None,
           provision=None, tier=None, ignore_thresholds=None)
Docstring: Create a pool LUN in the pool.
File:      c:\work\python\storops\storops\vnx\resource\block_pool.py
Type:      instancemethod
  • In IPython, use tab to check all extrinsic methods/properties of the resource. Print the resource to check all intrinsic properties.
>>> vnx.
vnx.control_station_ip           vnx.get_property_key             vnx.parse_all
vnx.create_cg                    vnx.get_property_label           vnx.parsed_resource
vnx.create_pool                  vnx.get_rg                       vnx.poll
vnx.create_rg                    vnx.get_sg                       vnx.property_names
vnx.create_sg                    vnx.get_snap                     vnx.delete_cg
vnx.domain                       vnx.get_sp_port                  vnx.delete_disk
vnx.existed                      vnx.heartbeat                    vnx.delete_pool
vnx.get_available_disks          vnx.install_disk                 vnx.delete_rg
vnx.get_cg                       vnx.is_auto_tiering_enabled      vnx.delete_sg
vnx.get_connection_port          vnx.is_compression_enabled       vnx.delete_snap
vnx.get_dict_repr                vnx.is_dedup_enabled             vnx.set_block_credential
vnx.get_disk                     vnx.is_fast_cache_enabled        vnx.set_cli
vnx.get_fc_port                  vnx.is_mirror_view_async_enabled vnx.set_naviseccli
vnx.get_fcoe_port                vnx.is_mirror_view_enabled       vnx.spa_ip
vnx.get_index                    vnx.is_mirror_view_sync_enabled  vnx.spb_ip
vnx.get_iscsi_port               vnx.is_sancopy_enabled           vnx.stop_heart_beat
vnx.get_lun                      vnx.is_snap_enabled              vnx.update
vnx.get_migration_session        vnx.is_thin_enabled              vnx.update_nodes_ip
vnx.get_ndu                      vnx.is_valid                     vnx.with_no_poll
vnx.get_pool                     vnx.json                         vnx.with_poll
vnx.get_pool_feature             vnx.parse

How to Contribute

  1. Open an issue at the GitHub storops project.
  2. Fork the repository on GitHub and make changes on your branch.
  3. Add tests to cover your change.
  4. Send a pull request.
  5. Make sure to add yourself to “Contributors” listed below.

Contributors

EMC Contributors

Community Contributors

Patches and Suggestions

Release History

Release History

0.3.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.25

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.24

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.23

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.22

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.21

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.20

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.19

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.17

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.16

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.15

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.14

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.13

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.12

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.11

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.10

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.9

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.8

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.7

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.15

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.14

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
storops-0.3.0-py2.py3-none-any.whl (624.6 kB) Copy SHA256 Checksum SHA256 2.7 Wheel Nov 24, 2016
storops-0.3.0.zip (357.9 kB) Copy SHA256 Checksum SHA256 Source Nov 24, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting