Skip to content

CC-Digital-Innovation/Storage-Reporting

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

Capacity Reporting

Pulls Storage Capacity information from all customer storage arrays and creates a CSV
Explore the docs »

View Demo Presentation TBD · Report Bug

Table of Contents
  1. Usage
  2. Getting Started
  3. Report Script
  4. API Endpoints
  5. Roadmap
  6. History
  7. Contact
  8. Acknowledgments
  9. License

Usage

Utilizes the report script to gather capacity reporting for XtremIO, Pure Storage, Vmax and Data Domain devices. This is configurable with lookup.json edits and config.ini edits. The data gathered from the script can be saved to a local file, a fileshare folder, and is also saved to NocoDB. With the database, the end user can retrieve device data as a CSV file using the API endpoints and also allows the end user to lookup device information.


How

Logo

Built With

Python

(back to top)


Getting Started

Prerequisites

  1. Python version 3.7.14+
  2. Install requirements.txt
  3. NocoDB Authorization Token

Installation

Clone the repository

git clone https://github.com/CC-Digital-Innovation/Capacity-Reporting.git

Install requirements.txt

pip install -r requirements.txt

NOTE: The following will be installed


Report

Automation

Report.py can be scheduled via a task manager service (Windows Task Manager, cronjob etc). The script iterates over devices outlined in lookup.json and depending on device type, will do the following:

  • Gather capcity information for the given device
  • calculate percentages and normalize all data to gigabytes
  • Gather drive status for given arrays drives
  • write data to a csv file and put that file in either a netshare folder, local folder, both or niether
  • Sends all data to NoCo DB for history retrieval

XtremIO devices

report.py calls on xtremio api to gather information about the devices capacity. user name and password authentication is used and credentials are in lookup.json

Pure Storage devices

report.py calls on Pure storage api to gather information about the devices capacity. user name and password is used to get a token to authorize a session and credentials are outlined in lookup.json

VMAX devices

VMAX devices require symcli setup on the machine that report is running from. The symcli interface has a configuration file that each device will need to be configured for. SAMPLE CONFIG PENDING report.py uses subproccess calls to symcli which is set up to run connections to vmax machines. the sym cli call uses an sid and a device name configured in the symcli configuration. thse are outlined in lookup.json for vmax devices only

Data Domain Devices

similarly to Pure and XtremIO devices, the data doman api is leveraged to get capacity data. STILL IN PROGRESS: failed drives from data domain is not easliy found in the data domain api. user name and password are used to generate an api token and token is used to authenticate api calls. credentials are found in lookup.json


Endpoints

/NocoDB/array/

This endpoint takes in an integer value and will return the amount of Arrays stored in the database. Note: It will only return as many Arrays available, so exceeding the number can return a smaller count since there may not be that many Arrays available (which would ultimately result in returning every available Array).

/NocoDB/geo/

This endpoint takes in an integer value and will return the amount of Geo locations stored in the database. Note: It will only return as many Geo locations available, so exceeding the number can return a smaller count since there may not be that many Geo locations available (which would ultimately result in returning every available Geo location).

/NocoDB/division/

This endpoint takes in an integer value and will return the amount of Divisions stored in the database. Note: It will only return as many Divisions available, so exceeding the number can return a smaller count since there may not be that many Divisions available (which would ultimately result in returning every available Division).

/NocoDB/type/

This endpoint takes in an integer value and will return the amount of Types stored in the database. Note: It will only return as many Types available, so exceeding the number can return a smaller count since there may not be that many Types available (which would ultimately result in returning every available Type).

/NocoDB/filter

This endpoint requires an Array name (can be found by running the Array 'GET' endpoint), a start/end date range for a specified data set retrieval. Each column field is optional to include in the CSV file. Select true if the data is to be included or select false to ignore the data:

Example:

  • start_date and end_date set to 2022-11-17
  • choose true for columns wanted in the CSV file (but can also be set to false if the column is not needed)
  • An added bonus is the Get_All_Data option, where if set to true, then the rest of the columns can be skipped, and the CSV file will contain every column with all the data for that device's start/end date range

Roadmap

1. TBD

2. TBD

(back to top)


History

version 0.1 (info) - 2022/MM/DD

version 0.2 (info) - 2022/MM/DD

version 0.3 (info) - 2022/MM/DD


Contact

Alex Barraza - @sabarraz - alex.barraza@computacenter.com

Ben Verley - @bverley92 - ben.verley@computacenter.com

Project Link: https://github.com/CC-Digital-Innovation/Capacity-Reporting

(back to top)


Acknowledgments

Jonny Le

Richard Bocchinfuso

(back to top)


License

MIT License

Copyright (c) [2022] [Computacenter]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

(back to top)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 99.3%
  • Dockerfile 0.7%