Skip to content

Commit 9e5b9d2

Browse files
committed
Updated to provide Pure_Copy_Volume.py
1 parent cb22015 commit 9e5b9d2

File tree

1 file changed

+145
-0
lines changed

1 file changed

+145
-0
lines changed

Pure_Copy_Volume.py

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
import purestorage
2+
import requests
3+
from requests.packages.urllib3.exceptions import InsecureRequestWarning
4+
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
5+
from base64 import b64encode
6+
import os
7+
import sys
8+
import json
9+
import getpass
10+
from optparse import OptionParser
11+
from datetime import datetime, timedelta
12+
import time
13+
from time import gmtime, strftime, strptime
14+
from operator import itemgetter, attrgetter
15+
16+
# Global Variables
17+
VERSION = '1.0.0'
18+
HEADER = 'Pure Storage Copy Volume (' + VERSION + ')'
19+
BANNER = ('=' * 100)
20+
DEBUG_LEVEL = 0
21+
VERBOSE_FLAG = False
22+
COOKIE = ''
23+
24+
def create_session(flashArray, user, password):
25+
26+
jsonData = purestorage.FlashArray(flashArray, user, password)
27+
return(jsonData)
28+
29+
def parsecl():
30+
usage = 'usage: %prog [options]'
31+
version = '%prog ' + VERSION
32+
description = "This application has been developed using Pure Storage v1.7 RESTful Web Service interfaces. Developed and tested using Python 3.6 on Mac OS 10.12. Please contact ron@purestorage.com for assistance."
33+
34+
parser = OptionParser(usage=usage, version=version, description=description)
35+
36+
37+
parser.add_option('-d', '--debug',
38+
type = 'int',
39+
dest = 'DEBUG_LEVEL',
40+
default = 0,
41+
help = 'Debug level, used for HTTP debugging')
42+
43+
parser.add_option('-p', '--password',
44+
action = 'store',
45+
type = 'string',
46+
dest = 'password',
47+
help = 'Pure password')
48+
49+
parser.add_option('-s', '--server',
50+
action = 'store',
51+
type = 'string',
52+
dest = 'flashArray',
53+
help = 'Pure FlashArray')
54+
55+
parser.add_option('--source',
56+
action = 'store',
57+
type = 'string',
58+
dest = 'sourcev',
59+
help = 'Source Volume Name')
60+
61+
parser.add_option('--target',
62+
action = 'store',
63+
type = 'string',
64+
dest = 'targetv',
65+
help = 'Target Volume Name')
66+
67+
parser.add_option('-u', '--user',
68+
action = 'store',
69+
type = 'string',
70+
dest = 'user',
71+
help = 'Pure user name')
72+
73+
parser.add_option('-v', '--verbose',
74+
action = 'store_true',
75+
dest = 'VERBOSE_FLAG',
76+
default = False,
77+
help = 'Verbose [default: %default]')
78+
79+
(options, args) = parser.parse_args()
80+
81+
'''
82+
print("Options:", options)
83+
print("Args:", args)
84+
'''
85+
86+
return(options)
87+
88+
def main():
89+
# Setup variables
90+
global DEBUG_LEVEL
91+
exit_code = 0
92+
93+
# Check for command line parameters
94+
options = parsecl()
95+
password = options.password
96+
user = options.user
97+
flashArray = options.flashArray
98+
sourcev = options.sourcev
99+
targetv = options.targetv
100+
DEBUG_LEVEL = options.DEBUG_LEVEL
101+
VERBOSE_FLAG = options.VERBOSE_FLAG
102+
103+
if DEBUG_LEVEL != 0:
104+
print('Password', password)
105+
print('User', user)
106+
print('Flash Array', flashArray)
107+
print('Source Volume name', sourcev)
108+
print('Target Volume name', targetv)
109+
print('Debug Level:', DEBUG_LEVEL)
110+
111+
if flashArray == None:
112+
sys.exit('Exiting: You must provide FlashArray details')
113+
114+
if user and password == None:
115+
sys.exit('Exiting: You must provide password if using username')
116+
117+
print(BANNER)
118+
print(HEADER + ' - ' + flashArray)
119+
print(strftime('%Y/%m/%d %H:%M:%S %Z', gmtime()))
120+
print(BANNER)
121+
122+
# Create session
123+
array = create_session(flashArray, user, password)
124+
125+
# Create Volume
126+
jsonData = array.copy_volume(sourcev, targetv)
127+
128+
#jsonData = array.list_volumes()
129+
if VERBOSE_FLAG:
130+
print(BANNER)
131+
print(json.dumps(jsonData, sort_keys=False, indent=4))
132+
133+
print('Copied Volume ' + sourcev + ' To ' + targetv)
134+
135+
# Close API session
136+
array.invalidate_cookie()
137+
138+
print(BANNER)
139+
print(strftime('%Y/%m/%d %H:%M:%S %Z', gmtime()))
140+
print(BANNER)
141+
sys.exit(exit_code)
142+
143+
main()
144+
145+

0 commit comments

Comments
 (0)