Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
406 commits
Select commit Hold shift + click to select a range
9e95119
Merge pull request #395 from nilangekarss/fix393
wdurairaj Nov 2, 2018
df19dc6
Fix for issue #392
imran-ansari Nov 5, 2018
f1f22d5
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari Nov 5, 2018
b8e90be
PEP8 fix
imran-ansari Nov 5, 2018
f3387a0
Fixed PEP8 errors
imran-ansari Nov 7, 2018
9b2a81b
Fix pep8 error
wdurairaj Nov 7, 2018
f049f1e
Update volume_manager.py
imran-ansari Nov 8, 2018
84059ce
Added help content for backend display help
imran-ansari Nov 8, 2018
ec935a7
Merge branch 'plugin_v2' of https://github.com/imran-ansari/python-hp…
imran-ansari Nov 8, 2018
637518c
Added usage to display help
imran-ansari Nov 8, 2018
c7ec9b7
Fixed typo
imran-ansari Nov 8, 2018
c743301
Merge pull request #397 from imran-ansari/plugin_v2
wdurairaj Nov 8, 2018
897a045
Create UCP Installation Steps with Docker EE 2.0
prablr79 Nov 8, 2018
53ef995
Fix Issue #401 - Avoid edge tag on alpine to be compatible on OpenSSL…
wdurairaj Nov 10, 2018
8e84044
Merge pull request #406 from wdurairaj/fix_ssl_error
wdurairaj Nov 10, 2018
fa2a5af
Fix for issue #408
imran-ansari Nov 13, 2018
ebc11dd
Merge pull request #409 from imran-ansari/plugin_v2
wdurairaj Nov 13, 2018
dd9eee2
Fix missing 'Options' in volume inspect attribute for clone, import …
wdurairaj Nov 13, 2018
16f5fa2
Fix for #407 and mount issue
imran-ansari Nov 13, 2018
cfa8205
Fixed broken UTs and PEP8
imran-ansari Nov 14, 2018
630c111
Merge pull request #412 from imran-ansari/plugin_v2
wdurairaj Nov 14, 2018
4a5a45a
fixed misspelled snapshotPrefix option
c-snell Nov 14, 2018
baa69d0
Rebase with latest code
wdurairaj Nov 14, 2018
ed36dcf
Fix missing 'Options' in volume inspect attribute for clone, import …
wdurairaj Nov 13, 2018
57fe8e0
Rebase with latest code
wdurairaj Nov 14, 2018
4297ff6
Update log lines
wdurairaj Nov 14, 2018
4ec36be
resolve merge conflict
wdurairaj Nov 14, 2018
8a5a74c
resolve merge conflict
wdurairaj Nov 14, 2018
ff5e967
Merge pull request #410 from wdurairaj/fix_inspect_bug
wdurairaj Nov 14, 2018
bcfe8f9
Improved replication documentation
imran-ansari Nov 15, 2018
3e65b83
Replication: Added active/passive documentation
imran-ansari Nov 15, 2018
dab7aaf
Fixed typo
imran-ansari Nov 15, 2018
039fa4c
Added see also section at the end
imran-ansari Nov 15, 2018
886e566
Added Peer Persistence based replication documentation
imran-ansari Nov 16, 2018
ea1ea50
Missed out Peer Persistence based replication documentation in last c…
imran-ansari Nov 16, 2018
9dd7e96
Increased title font for PP based replication documentation
imran-ansari Nov 16, 2018
0fb31c0
Added a note
imran-ansari Nov 16, 2018
4453701
Introductory content updated for PP documentation
imran-ansari Nov 16, 2018
41d2bcc
Fix Issue #390, Allow 'size' in snapshot options
wdurairaj Nov 16, 2018
872c424
Updated usage doc
wdurairaj Nov 16, 2018
33cab91
Merge pull request #424 from wdurairaj/validator_change
wdurairaj Nov 16, 2018
e5a05e9
Added content related to few more restrictions
imran-ansari Nov 16, 2018
eb14977
Updated a restriction with more details
imran-ansari Nov 16, 2018
f41536f
Fix volume backend caching
wdurairaj Nov 17, 2018
86fcac2
Fix UT
wdurairaj Nov 17, 2018
97b69d4
Fix UT failures
wdurairaj Nov 17, 2018
5e1fed9
Address review comments
wdurairaj Nov 17, 2018
57e7129
Merge pull request #426 from wdurairaj/fix_volume_map_caching
wdurairaj Nov 18, 2018
70ee850
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari Nov 19, 2018
f2a5d24
Auto Generate Snapshot Schedule Name if -o scheduleName=auto is passed
wdurairaj Nov 19, 2018
7aee310
fixed pep8
wdurairaj Nov 19, 2018
cf3277f
Address review comments , add help text around this option
wdurairaj Nov 20, 2018
d70e862
Merge pull request #429 from wdurairaj/auto_schedule_name_generate
wdurairaj Nov 20, 2018
620f65c
Merge pull request #415 from budhac/patch-6
wdurairaj Nov 21, 2018
4f0fa55
added openshift_3.10_installation_guide
Nov 23, 2018
f074ae3
Fix for #428
imran-ansari Nov 26, 2018
2f1ebff
Revert "Fix for #428"
imran-ansari Nov 26, 2018
9f6638c
Merge pull request #432 from shaik-gousa-khaja-asif/openshift_3.10_doc
wdurairaj Nov 27, 2018
c660a6e
Update and rename UCP Installation Steps with Docker EE 2.0 to config…
wdurairaj Nov 27, 2018
02c720f
Update configuring_docker_ee_2_with_volume_plugin.md
wdurairaj Nov 27, 2018
36451c3
Merge pull request #398 from hpe-storage/prablr79-patch-1
wdurairaj Nov 27, 2018
2657e74
Fix for issue #428
imran-ansari Nov 29, 2018
f394a7d
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari Dec 5, 2018
4aa4e26
Implement Request Throttling for mount requests
wdurairaj Jan 19, 2019
d5d25b2
Update openshift-3_10_installation.md
shaik-gousa-khaja-asif Jan 23, 2019
1a8943b
Update openshift-3_10_installation.md
shaik-gousa-khaja-asif Jan 28, 2019
193cde9
Merge pull request #458 from shaik-gousa-khaja-asif/patch-3
wdurairaj Jan 28, 2019
dd03180
Accept -o manager option in volume create
wdurairaj Feb 20, 2019
6bd12d4
Accept -o manager option in volume create
wdurairaj Feb 20, 2019
cc24e57
Merge branch 'request-throttling' of https://github.com/wdurairaj/pyt…
wdurairaj Feb 21, 2019
7d618e9
Additional changes to ignore manager option in clone,snapshot etc.
wdurairaj Feb 26, 2019
b6e92c1
pulled python-3parclient 4.2.9
wdurairaj Mar 7, 2019
c70d81a
Update requirements-py3.txt
shaik-gousa-khaja-asif Mar 7, 2019
a6c2e78
Merge pull request #496 from shaik-gousa-khaja-asif/patch-4
wdurairaj Mar 7, 2019
aeec913
Introduced feature of initializing backends asynchronously
wdurairaj Mar 8, 2019
fd03ca3
Fix unit tests and pep8
wdurairaj Mar 10, 2019
f57c3ef
Ability to create a regular volume from a replicated backend (#491)
farhan7500 Mar 11, 2019
f75d4e0
Uninitialized backends will have 'INITIALIZING' state in -o help=back…
wdurairaj Mar 11, 2019
0b74f8a
updated tox configuration
wdurairaj Mar 11, 2019
fe80f3e
Added copyright header
wdurairaj Mar 11, 2019
b115429
Fix UT for KeyError
wdurairaj Mar 11, 2019
8be4e59
Moved the import statement
wdurairaj Mar 12, 2019
3150345
Moved the state initialization of backend to main thread
wdurairaj Mar 12, 2019
891da8a
Fixed a problem with setting the INITIALIZED state
wdurairaj Mar 12, 2019
208cf49
Adding locking around reading .node_id code
wdurairaj Mar 13, 2019
4163591
Moved _get_node_id() to orchestrator class to avoid get it called mul…
wdurairaj Mar 13, 2019
e269a38
Updated travis to use 3.5 virtualenv
wdurairaj Mar 13, 2019
d3cd0a9
Update .travis.yml
wdurairaj Mar 13, 2019
7c4a34b
Merge pull request #497 from wdurairaj/request-throttling
imran-ansari Mar 13, 2019
0691bb8
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari Mar 15, 2019
2e434c7
File Persona Support
imran-ansari Mar 15, 2019
181ec73
File Persona: using single configuration file
imran-ansari Mar 18, 2019
04579c0
Fixed typo in function name
imran-ansari Mar 18, 2019
4b9c0e4
Fixed PEP8 issues
imran-ansari Mar 18, 2019
1b90464
Fixed UT failures
imran-ansari Mar 18, 2019
0c91ec9
Fixed couple of more PEP8 issues
imran-ansari Mar 18, 2019
a0d791c
Added code for multiple default backends
imran-ansari Mar 20, 2019
2f23359
Expect cpg to be list type in hpe.conf
imran-ansari Mar 21, 2019
5a5d3e9
Fixed broken Travis CI
imran-ansari Mar 25, 2019
2e935b6
Fixed unit test related to listing of volumes
imran-ansari Mar 25, 2019
3cbf87a
Fixed multiple issues
imran-ansari Mar 31, 2019
23c795f
Update file_backend_orchestrator.py
imran-ansari Mar 31, 2019
2ac3489
Fixed mount/unmount + Addressed review comment
imran-ansari Apr 2, 2019
8b20405
Update file_manager.py
imran-ansari Apr 2, 2019
55275b0
Update hpe_3par_mediator.py
imran-ansari Apr 2, 2019
0798071
Fix for issue 518
sneharai4 Apr 5, 2019
76952be
Fix for issue 502
Apr 8, 2019
b56ffb3
Merge pull request #553 from sneharai4/passphrase_fix_518_issue
imran-ansari Apr 8, 2019
045e22f
Fix for issue 502 (#554)
nilangekarss Apr 8, 2019
f7afcb3
Feature: Add RollingFileAppender handler for logging
wdurairaj Apr 9, 2019
c4def7d
Added check for None Value to fix issue 502
nilangekarss Apr 10, 2019
25b7d8d
Merge branch 'FixIssue502' of https://github.com/nilangekarss/python-…
nilangekarss Apr 10, 2019
72bf407
Renamed log1 alias to log - fix minor review comment
wdurairaj Apr 11, 2019
d4f8455
Merge pull request #564 from nilangekarss/FixIssue502
wdurairaj Apr 15, 2019
99dc2ab
Merge pull request #563 from wdurairaj/log4j_rolling_appender
wdurairaj Apr 15, 2019
35b4fc6
Fix for issue #513
imran-ansari Apr 16, 2019
3543960
Revert "Fix for issue #513"
imran-ansari Apr 16, 2019
c714128
Fixed issue #513
imran-ansari Apr 16, 2019
57024c4
Pep8 fixed
imran-ansari Apr 16, 2019
827c8d1
Merge pull request #581 from imran-ansari/bug_fixes
wdurairaj Apr 16, 2019
9cdc457
Fix Issue #534 (#576)
wdurairaj Apr 15, 2019
f9fddf2
Fix Issue #534 (#576) (#588)
wdurairaj Apr 25, 2019
510ecd7
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari Apr 27, 2019
d4533e3
Review Comments addressed
imran-ansari Apr 28, 2019
1cf77b3
Unit test framework fixed for decrypt_password
imran-ansari Apr 28, 2019
2bedbc0
Rollback for default share creation
imran-ansari May 3, 2019
51993d9
Resolved PEP8 errors
imran-ansari May 3, 2019
8e20d06
Fixed async initialization failure in UTs
imran-ansari May 3, 2019
2d81137
Update cmd_deleteshare.py
imran-ansari May 3, 2019
49ba34e
Update cmd_deleteshare.py
imran-ansari May 3, 2019
30ccc3e
Added logging
imran-ansari May 6, 2019
72468ba
Backend metadata initialization done for a use case
imran-ansari May 6, 2019
b3bdd9d
PEP8 fixed + Quota set in a use case
imran-ansari May 6, 2019
e263b31
File Persona Implementation (#434)
imran-ansari May 6, 2019
a05cda1
Combined default and non-default share creation into one template fun…
imran-ansari May 7, 2019
2a838f2
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari May 7, 2019
be7fddc
Removed unused import references
imran-ansari May 7, 2019
91de0fc
Async initialization fix
imran-ansari May 7, 2019
69d1a90
Added sleep to main UT thread
imran-ansari May 7, 2019
f68219f
Fixed PEP8
imran-ansari May 7, 2019
bb57f8a
Default size modified + share create on legacy FPG issue fixed
imran-ansari May 8, 2019
14679dc
Updated error message for legacy FPG use case
imran-ansari May 8, 2019
caf8312
Combined default and non-default share creation into one template fun…
imran-ansari May 8, 2019
ed8e09c
Updated help content for File Persona
imran-ansari May 8, 2019
e4b71e1
FPG initialization requires share_cnt initialization
imran-ansari May 8, 2019
a1bbd12
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari May 8, 2019
3bc08a4
FPG create needed to initialize share_cnt + help content updated (#596)
imran-ansari May 8, 2019
133874c
Default fpg name conflict fix (#599)
imran-ansari May 10, 2019
27eb0e1
file ACL validations
nilangekarss May 8, 2019
5d368b4
fixed pep8 errors for ACL validations
nilangekarss May 8, 2019
5ae3b6e
Done changes for fsMode fsOwner
nilangekarss May 9, 2019
99a2652
Added exception handling and pep8 correction
nilangekarss May 10, 2019
0fc3161
removed comments
nilangekarss May 10, 2019
5b3a128
added minor changes for smd execution
nilangekarss May 10, 2019
ae20b02
added help text and corrected typo
nilangekarss May 13, 2019
8d6ea1a
Corrected default FPG size
nilangekarss May 13, 2019
23951d8
Corrected default FPG SIZE
nilangekarss May 13, 2019
2cfdf6c
Feature: File Persona fsMode, fsOwner implementation (#602)
nilangekarss May 13, 2019
2396582
Working ACL changes for fsMode
nilangekarss May 15, 2019
6089640
Exception handling for ACL String of fsMode
nilangekarss May 15, 2019
f6679d8
file ACL validations
nilangekarss May 8, 2019
ffab892
fixed pep8 errors for ACL validations
nilangekarss May 8, 2019
05a77e3
Done changes for fsMode fsOwner
nilangekarss May 9, 2019
820ee90
Added exception handling and pep8 correction
nilangekarss May 10, 2019
2dcc30f
added help text and corrected typo
nilangekarss May 13, 2019
da05a8a
Corrected default FPG size
nilangekarss May 13, 2019
f8a9891
Working ACL changes for fsMode
nilangekarss May 15, 2019
845996f
Exception handling for ACL String of fsMode
nilangekarss May 15, 2019
55a1599
Add ACL string information
nilangekarss May 15, 2019
3761fbd
Added help text for fsMode information
nilangekarss May 15, 2019
5cbf7df
Added more information for fsMode
nilangekarss May 15, 2019
f24d2fd
Fixed pep8 erros for ACL fsMode
nilangekarss May 15, 2019
20ac4ba
Addressed Imran's review commnents
nilangekarss May 16, 2019
99173f3
corrected logging type
nilangekarss May 17, 2019
d4674dc
Merge pull request #608 from nilangekarss/fileACL
imran-ansari May 17, 2019
7112d4c
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari May 17, 2019
b823492
Fix for issue #607
imran-ansari May 17, 2019
0d3ff4f
Fixed issues #600, #606, #607
imran-ansari May 21, 2019
b6db298
Fixed pep8
imran-ansari May 21, 2019
e8cfb58
Overridden WS minimum version check to 3.3.1
imran-ansari May 22, 2019
2ae1dc5
Disabled 'readonly', 'nfsOptions' and 'comment' options
imran-ansari May 22, 2019
3eb73b9
Disabled 'readonly', 'nfsOptions' and 'comment' options
imran-ansari May 22, 2019
9a09554
File share size is now expected in GiB instead of MiB (#615)
nilangekarss May 23, 2019
2e1b3d6
Fix for issue #620
imran-ansari May 23, 2019
87c640f
Fixed issue #620
imran-ansari May 23, 2019
5adbb75
Merge remote-tracking branch 'upstream/plugin_v2' into Issue#607
imran-ansari May 23, 2019
969f572
Adding back as the code got removed inadvertently
imran-ansari May 23, 2019
b24b1d3
Removed unused import to fix PEP8
imran-ansari May 23, 2019
e4bb411
Merge remote-tracking branch 'origin/Issue#607' into issue_607
imran-ansari May 24, 2019
b2fc4dd
Fixed #609 to return relevant share details for inspect
imran-ansari May 24, 2019
dc75aff
Treat DEFAULT_BLOCK and DEFAULT_FILE as special keywords always
imran-ansari May 25, 2019
2e0c8a9
Allow mount only if share is in 'AVAILABLE' state
imran-ansari May 27, 2019
218e8a4
Disallow remove if share mounted + PEP8
imran-ansari May 27, 2019
9d52848
Fixed issues #595, #600, #606, #607, #609, #610, #620, #621 (#617)
imran-ansari May 27, 2019
99ac2f4
Delete share fixed + Removed unnecessary metadata
imran-ansari May 27, 2019
233c87b
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari May 27, 2019
2d437f1
Merge branch 'Issue#607' into plugin_v2
imran-ansari May 27, 2019
492943d
Fixed inspect issue (#624)
imran-ansari May 27, 2019
045b871
Merge branch 'plugin_v2' of https://github.com/hpe-storage/python-hpe…
imran-ansari May 27, 2019
3662089
FPG delete done on child thread
imran-ansari May 27, 2019
f4f4f64
Restructured delete share flow
imran-ansari May 28, 2019
1e86e3d
Fix for issue #614 (#630)
nilangekarss May 29, 2019
95a8a32
Fix for issue #625 (#626)
nilangekarss May 29, 2019
7e5f13c
Fix for issue #633 (#634)
nilangekarss May 30, 2019
10d90d8
Fixed issues #592, #597, #631, #632, #635 (#629)
imran-ansari May 31, 2019
1c984bc
Fixed issues #636, #637, #638 (#639)
imran-ansari Jun 2, 2019
8973021
Merge branch 'plugin_v2' of https://github.com/hpe-storage/python-hpe…
wdurairaj Jun 18, 2019
70ce890
Fixed #644 and #646 (#655)
imran-ansari Jun 18, 2019
08950d3
Merge branch 'plugin_v2' of https://github.com/hpe-storage/python-hpe…
wdurairaj Jun 18, 2019
b60c315
Fix for lost volume mounts after node reboot (#650)
kfeh Jun 24, 2019
73fcc74
Fix chcon error -- Issue #640 (#658)
wdurairaj Jun 24, 2019
be84a25
UTs implemented + Misc (#662)
imran-ansari Jun 24, 2019
d1c97e9
Fixed issue #648 + Documentation (#666)
imran-ansari Jun 30, 2019
adc4ae3
updated help content with correct spellings
prablr79 Jul 3, 2019
40e01da
Merge branch 'plugin_v2' of https://github.com/hpe-storage/python-hpe…
wdurairaj Jul 3, 2019
1fe5cfb
Fix for issue #663 + Create share rollback + Documentation (#667)
imran-ansari Jul 3, 2019
3f748bf
FC Driver initialization fails on 3PAR Array when the iscsi vlans are…
wdurairaj Jul 3, 2019
4b60617
Merge branch 'plugin_v2' of https://github.com/hpe-storage/python-hpe…
wdurairaj Jul 3, 2019
3859380
Merge branch 'plugin_v2' of https://github.com/hpe-storage/python-hpe…
wdurairaj Jul 3, 2019
c70be36
Fix issue with shared volume mount - Issue #672
wdurairaj Jul 5, 2019
bdaddec
Merge pull request #673 from wdurairaj/fix_shared_volume_mount
imran-ansari Jul 7, 2019
6143233
Correction in message string fix issue 670 (#671)
nilangekarss Jul 8, 2019
9f8faaa
Fix issue #672
wdurairaj Jul 8, 2019
d252fe7
Merge pull request #674 from wdurairaj/fix_issue_672
imran-ansari Jul 8, 2019
c0cdafc
Bug fix for #678
imran-ansari Jul 9, 2019
e37fdc8
fix for issue #679 (#682)
nilangekarss Jul 10, 2019
64938ba
Fix for issue #680 (#684)
imran-ansari Jul 10, 2019
fd35eb9
Fix for mount from multiple hosts (#690)
imran-ansari Jul 11, 2019
ca2159c
Merge branch 'plugin_v2' of https://github.com/hpe-storage/python-hpe…
imran-ansari Jul 12, 2019
5a03c2b
Fix for Primera
imran-ansari Jul 25, 2019
252c0e1
Removed unused import
imran-ansari Jul 25, 2019
9dfd2c8
Fix for issue #698
imran-ansari Jul 25, 2019
d9c0bbb
Added error message translation
imran-ansari Jul 25, 2019
5d9fca2
Fixes issue #428 (#694)
imran-ansari Jul 26, 2019
8dbcc2a
Merge remote-tracking branch 'upstream/plugin_v2' into plugin_v2
imran-ansari Jul 29, 2019
82ac12e
Inspect to return flash_cache as string and not boolean
imran-ansari Jul 31, 2019
3711d45
Added an all inclusive license check
imran-ansari Aug 2, 2019
e2726f4
Updated error message
imran-ansari Aug 7, 2019
d536eba
Fix for Primera (#699)
wdurairaj Aug 7, 2019
de3dcad
modified dockerfile and requirements file (#713)
bhagyashree-sarawate Aug 7, 2019
aa50bf7
Fix pep8 issues in last build (#715)
wdurairaj Aug 7, 2019
991b17b
Fix ut qos (#716)
wdurairaj Aug 7, 2019
90d7ae5
Modified help for primera (#726)
bhagyashree-sarawate Sep 3, 2019
1db9c8d
fix for #718, #714, #711, #710 (#723)
bhagyashree-sarawate Sep 3, 2019
1691570
V3.3 (#734)
imran-ansari Sep 25, 2019
805d852
Added fix for 704 (#727)
bhagyashree-sarawate Oct 7, 2019
5f12803
Fixed locking issue (#748)
imran-ansari Oct 7, 2019
ef2c75f
Changes for V3.3 for reboot handling (#753)
imran-ansari Oct 17, 2019
ebd31ec
Fix for password encryption failure (#764)
wdurairaj Dec 11, 2019
b7fa6b3
Fix CI failures on manage usecases (#765)
wdurairaj Dec 11, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
dist: xenial
sudo: false
language: python
python:
- "3.5"
install:
- sudo apt-get install -y tox

script:
- tox -e py35 -- test.test_hpe_plugin_v2
- tox -e pep8
11 changes: 9 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM alpine:edge
FROM alpine:3.8

ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONPATH=${HOME}/python-hpedockerplugin:/root/python-hpedockerplugin
Expand All @@ -20,6 +20,7 @@ RUN apk add --no-cache --update \
sg3_utils\
eudev \
libssl1.0 \
nfs-utils \
sudo \
&& apk update \
&& apk upgrade \
Expand Down Expand Up @@ -67,6 +68,13 @@ RUN mkdir -p /opt/hpe/data
RUN chmod u+x /usr/bin/iscsiadm
RUN chmod u+x /usr/bin/cleanup.sh

# Patch the os_brick, twisted modules

COPY ./patch_os_bricks/linuxscsi.py /usr/lib/python3.6/site-packages/os_brick-1.13.1-py3.6.egg/os_brick/initiator/linuxscsi.py
COPY ./patch_os_bricks/rootwrap.py /usr/lib/python3.6/site-packages/os_brick-1.13.1-py3.6.egg/os_brick/privileged/rootwrap.py
COPY ./oslo/comm.py /usr/lib/python3.6/site-packages/oslo.privsep-1.29.0-py3.6.egg/oslo_privsep/comm.py
COPY ./patch_os_bricks/compat.py /usr/lib/python3.6/site-packages/Twisted-18.7.0rc1-py3.6-linux-x86_64.egg/twisted/python/compat.py

WORKDIR /python-hpedockerplugin
ENTRYPOINT ["/bin/sh", "-c", "./plugin-start"]

Expand All @@ -83,4 +91,3 @@ RUN sed -i \
ENV TAG $TAG
ENV GIT_SHA $GIT_SHA
ENV BUILD_DATE $BUILD_DATE

Empty file added __init__.py
Empty file.
14 changes: 3 additions & 11 deletions buildDockerPlugin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -92,18 +92,10 @@ rc=$?
exit $rc
fi

# Patch the os-bricks code

sudo rm ./v2plugin/rootfs/usr/lib/python3.6/site-packages/os_brick-1.13.1-py3.6.egg/os_brick/initiator/linuxscsi.pyc
sudo rm ./v2plugin/rootfs/usr/lib/python3.6/site-packages/os_brick-1.13.1-py3.6.egg/os_brick/privileged/rootwrap.pyc
sudo cp ./patch_os_bricks/linuxscsi.py ./v2plugin/rootfs/usr/lib/python3.6/site-packages/os_brick-1.13.1-py3.6.egg/os_brick/initiator/linuxscsi.py
sudo cp ./patch_os_bricks/rootwrap.py ./v2plugin/rootfs/usr/lib/python3.6/site-packages/os_brick-1.13.1-py3.6.egg/os_brick/privileged/rootwrap.py
sudo cp ./patch_os_bricks/compat.py ./v2plugin/rootfs/usr/lib/python3.6/site-packages/Twisted-18.7.0rc1-py3.6-linux-x86_64.egg/twisted/python/compat.py
sudo cp ./oslo/comm.py ./v2plugin/rootfs/usr/lib/python3.6/site-packages/oslo.privsep-1.29.0-py3.6.egg/oslo_privsep/comm.py


# end of patch for os-bricks
# minor modification to remove the .git folder from getting packaged
# into v2plugin folder
rm -rf ./v2plugin/rootfs/python-hpedockerplugin/.git
rm -rf ./v2plugin/rootfs/python-hpedockerplugin/.tox
docker plugin create ${pluginName} v2plugin
rm -rf v2plugin
rm -f unit_tests_run.log
157 changes: 111 additions & 46 deletions config/create_help.txt

Large diffs are not rendered by default.

47 changes: 47 additions & 0 deletions config/create_share_help.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@


===============================================
HPE 3PAR Share Plug-in For Docker: Create Help
===============================================
Create a share in HPE 3PAR using HPE 3PAR volume plug-in for Docker.

-o filePersona Presence of this flag allows the File Persona driver to process the request
-o cpg=x x specifies the cpg to be used for the share. This parameter can be used with or without
‘fpg’ option. When used with ‘fpg’, the FPG is created with the specified name if it
does not exist. If it does exist, then share is created under it.
When used without ‘fpg’ option, default FPG under the specified CPG is selected for share
creation. If default FPG does not exist, a new default FPG is created under which the
share is created.
-o fpg=x x is the name of the file provisioning group (FPG). This option must be specified when user wants
to use a non-default FPG or a legacy FPG. The FPG may or may not be an existing one.
For a non-existing FPG x, a new FPG is created using the CPG that is either explicitly
specified with '-o cpg' option or configured in hpe.conf.
If FPG exists, be it a legacy FPG or Docker managed FPG, share is simply created under it.
In case this option is not specified, then a default FPG is created with size 16TiB if it
doesn't exist. Naming convention for default FPG is DockerFpg_n where n is an integer
starting from 0.
-o size=x x is the size of the share in GiB. By default, it is 1024 GiB.
-o help -o filePersona When used together, these options display this help content
-o help=backends -o filePersona When used together, these options display status of the backends configured for File Persona
-o fsOwner=x x is the user id and group id that should own the root directory of nfs file share in the form of
[userId:groupId]. Administrator also need to make sure that local user and local group with these
ids are present on 3PAR before trying to mount the created share.
For such shares which has userId and groupId specified, mount will succeed only if users and
group with specified ids are present on 3PAR.
-o fsMode=x x is 1 to 4 octal digits that represent the file mode to be applied to the root directory of the
file system. Ex: fsMode="0754" , Here 0 before number is mandatory. This ensures specified user
of fsOwner will have rwx permissions, group will have rx permissions and others will have read
permissions.
x can also be ACL string. This also represents ACL permissions that are allowed on share directory.
fsMode contains list of ACEs. Use Commas to separate ACEs. Each ACE here contains 3 values named,
type, flag and permissions. These 3 values are separated by ':'. First ACE represents Owner,
Second ACE represents Group and third ACE represents EveryOne. These has to be represented in
order. Ex: A:fd:rwa,A:g:rwaxdnNcCoy,A:fdS:DtnNcy
type field can take only one of these values [A,D,U,L]
flag field can take one or more of these values [f,d,p,i,S,F,g]
permissions field can take one or more of these values [r,w,a,x,d,D,t,T,n,N,c,C,o,y]
Please refer 3PAR cli user guide more details on meaning of each flag.
Note: For fsMode values user can specify either of mode bits or ACL string. Both can not be used
simultaneously. While using fsMode it is mandatory to specify fsOwner. If Only fsMode is used
User will not be able to mount the share. This is because permissions and ownership changes are
done during the first mount call.
48 changes: 46 additions & 2 deletions config/setupcfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,17 @@
from hpedockerplugin import configuration as conf
from hpedockerplugin.hpe import hpe3par_opts as plugin_opts
from oslo_log import log as logging
import logging as log
from oslo_config import cfg
from logging.handlers import RotatingFileHandler

host_opts = [
cfg.StrOpt('hpedockerplugin_driver',
default='hpe.hpe_lefthand_iscsi.HPELeftHandISCSIDriver',
help='HPE Docker Plugin Driver to use for volume creation'),
cfg.StrOpt('mount_prefix',
default=None,
help='Mount prefix for volume mount'),
cfg.StrOpt('host_etcd_ip_address',
default='0.0.0.0',
help='Host IP Address to use for etcd communication'),
Expand Down Expand Up @@ -56,8 +61,7 @@
cfg.StrOpt('ssh_hosts_key_file',
default='/root/.ssh/ssh_known_hosts',
help='File containing SSH host keys for the systems with which '
'the plugin needs to communicate. OPTIONAL: '
'Default=$state_path/ssh_known_hosts'),
'the plugin needs to communicate'),
]

CONF = cfg.CONF
Expand All @@ -70,6 +74,40 @@ def setup_logging(name, level):
logging.setup(CONF, name)
LOG = logging.getLogger(None)

# Add option to do Log Rotation
handler = RotatingFileHandler('/etc/hpedockerplugin/3pardcv.log',
maxBytes=10000000, backupCount=100)
formatter = log.Formatter('%(asctime)-12s [%(levelname)s] '
'%(name)s [%(thread)d] '
'%(threadName)s %(message)s')

handler.setFormatter(formatter)
LOG.logger.addHandler(handler)

if level == 'INFO':
LOG.logger.setLevel(logging.INFO)
if level == 'DEBUG':
LOG.logger.setLevel(logging.DEBUG)
if level == 'WARNING':
LOG.logger.setLevel(logging.WARNING)
if level == 'ERROR':
LOG.logger.setLevel(logging.ERROR)


def setup_logging_for_ut(name, level):

logging.setup(CONF, name)
LOG = logging.getLogger(None)

# Add option to do Log Rotation
handler = log.FileHandler('./3pardcv.log')
formatter = log.Formatter('%(asctime)-12s [%(levelname)s] '
'%(name)s [%(thread)d] '
'%(threadName)s %(message)s')

handler.setFormatter(formatter)
LOG.logger.addHandler(handler)

if level == 'INFO':
LOG.logger.setLevel(logging.INFO)
if level == 'DEBUG':
Expand All @@ -80,6 +118,12 @@ def setup_logging(name, level):
LOG.logger.setLevel(logging.ERROR)


def getdefaultconfig(configfile):
CONF(configfile, project='hpedockerplugin', version='1.0.0')
configuration = conf.Configuration(host_opts, config_group='DEFAULT')
return configuration


def get_host_config(configfile):
CONF(configfile, project='hpedockerplugin', version='1.0.0')
return conf.Configuration(host_opts)
Expand Down
171 changes: 171 additions & 0 deletions docs/active-passive-based-replication.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# Active/Passive Based Replication #

In Active/Passive based replication, only one array is in active state
at any point of time serving the VLUNs of a given replicated volume.

When a remote copy group (RCG) is failed over manually via 3PAR CLI to the
secondary array, the secondary array becomes active. However, the VLUNs
of the failed over volumes are still not exported by the secondary array
to the host. In order to trigger that, the container/POD running on the
host needs to be restarted.

## Configuring replication enabled backend
**For FC Host**
```sh
host_etcd_port_number=<ETCD_PORT_NUMBER>
hpe3par_username=<Source-3PAR-Username>
hpe3par_password=<Source-3PAR-Password>
hpe3par_cpg=<Source-User-CPG>
hpedockerplugin_driver=hpedockerplugin.hpe.hpe_3par_fc.HPE3PARFCDriver
logging=DEBUG
san_ip=<Source-3PAR-SAN-IP>
san_login=<Source-3PAR-SAN-Username>
san_password=<Source-3PAR-SAN-Password>
host_etcd_ip_address=<IP1>[:PORT1[,IP2[:PORT2]][,IP3[:PORT3]]...]
hpe3par_api_url=https://<Source-Array-IP>:8080/api/v1
replication_device = backend_id:<Target-Array-Hostname>,
replication_mode:<synchronous | asynchronous | streaming>,
cpg_map:<Source-User-CPG>:<Target-User-CPG>,
snap_cpg_map:<Source-Snap-CPG>:<Target-Snap-CPG>
hpe3par_api_url:https://<Target-Array-IP>:8080/api/v1,
hpe3par_username:<3PAR-Username>,
hpe3par_password:<3PAR-Password>,
san_ip:<3PAR-SAN-IP>,
san_login:<3PAR-SAN-Username>,
san_password:<3PAR-SAN-Password>
```

*Note*:

1. In case of asynchronous replication mode, *sync_period* field can optionally be
defined as part of *replication_device* entry and it should be between range 300
and 31622400 seconds. If not defined, it defaults to 900 seconds.
2. *cpg_map* and *snap_cpg_map* in *replication_device* section are mandatory. If *snap_cpg_map* is not mentioned then it will be same as *cpg_map*
3. If password is encrypted for primary array, it must be encrypted for secondary array
as well using the same *pass-phrase*


**For ISCSI Host**
```sh
host_etcd_port_number=<ETCD_PORT_NUMBER>
hpe3par_username=<Source-3PAR-Username>
hpe3par_password=<Source-3PAR-Password>
hpe3par_cpg=<Source-User-CPG>
hpedockerplugin_driver=hpedockerplugin.hpe.hpe_3par_iscsi.HPE3PARISCSIDriver
logging=DEBUG
san_ip=<Source-3PAR-SAN-IP>
san_login=<Source-3PAR-SAN-Username>
san_password=<Source-3PAR-SAN-Password>
host_etcd_ip_address=<IP1>[:PORT1[,IP2[:PORT2]][,IP3[:PORT3]]...]
hpe3par_api_url=https://<Source-Array-IP>:8080/api/v1
hpe3par_iscsi_ips=<ISCSI_IP1>[,ISCSI_IP2,ISCSI_IP3...]
replication_device=backend_id:<Source-Array-Host-Name>,
replication_device = backend_id:<Target-Array-Name>,
replication_mode:<synchronous | asynchronous | streaming>,
cpg_map:<Source-User-CPG>:<Target-User-CPG>,
snap_cpg_map:<Source-Snap-CPG>:<Target-Snap-CPG>
hpe3par_api_url:https://<Target-Array-IP>:8080/api/v1,
hpe3par_username:<3PAR-Username>,
hpe3par_password:<3PAR-Password>,
san_ip:<3PAR-SAN-IP>,
san_login:<3PAR-SAN-Username>,
san_password:<3PAR-SAN-Password>
hpe3par_iscsi_ips=<ISCSI_IP1>[;ISCSI_IP2;ISCSI_IP3...]
```
*Note*:

1. *cpg_map* and *snap_cpg_map* in *replication_device* section are mandatory. If *snap_cpg_map* is not mentioned then it will be same as *cpg_map*
2. *hpe3par_iscsi_ips* MUST be defined upfront for both source and target arrays.
3. *hpe3par_iscsi_ips* can be a single ISCSI IP or a list of ISCSI IPs delimited by
semi-colon. Delimiter for this field is applicable for *replication_device* section ONLY.
4. If password is encrypted for primary array, it MUST be encrypted for secondary array
as well using the same *pass-phrase*.
5. In case of asynchronous replication mode, *sync_period* field can optionally be
defined as part of *replication_device* entry and it should be between range 300
and 31622400 seconds. If not defined, it defaults to 900 seconds.


## Managing Replicated Volumes ###
### Create replicated volume ###
This command allows creation of replicated volume along with RCG creation if the RCG
does not exist on the array. Newly created volume is then added to the RCG.
Existing RCG name can be used to add multiple newly created volumes to it.
```sh
$ docker volume create -d hpe --name <volume_name> -o replicationGroup=<3PAR_RCG_Name> [Options...]
```
where,
- *replicationGroup*: Name of a new or existing replication copy group on 3PAR array

One or more following *Options* can be specified additionally:
1. *size:* Size of volume in GBs
2. *provisioning:* Provision type of a volume to be created.
Valid values are thin, dedup, full with thin as default.
3. *backend:* Name of the backend to be used for creation of the volume. If not
specified, "DEFAULT" is used providied it is initialized successfully.
4. *mountConflictDelay:* Waiting period in seconds to be used during mount operation
of the volume being created. This happens when this volume is mounted on say Node1 and
Node2 wants to mount it. In such a case, Node2 will wait for *mountConflictDelay*
seconds for Node1 to unmount the volume. If even after this wait, Node1 doesn't unmount
the volume, then Node2 forcefully removes VLUNs exported to Node1 and the goes ahead
with the mount process.
5. *compression:* This flag specifies if the volume is a compressed volume. Allowed
values are *True* and *False*.

#### Example ####

**Create a replicated volume having size 1GB with a non-existing RCG using backend "ActivePassiceRepBackend"**
```sh
$ docker volume create -d hpe --name Test_RCG_Vol -o replicationGroup=Test_RCG -o size=1 -o backend=ActivePassiceRepBackend
```
This will create volume Test_RCG_Vol along with TEST_RCG remote copy group. The volume
will then be added to the TEST_RCG.
Please note that in case of failure during the operation at any stage, previous actions
are rolled back.
E.g. if for some reason, volume Test_RCG_Vol could not be added to Test_RCG, the volume
is removed from the array.


### Failover a remote copy group ###

There is no single Docker command or option to support failover of a RCG. Instead, following
steps must be carried out in order to do it:
1. On the host, the container using the replicated volume must be stopped or exited if it is running.
This triggers unmount of the volume(s) from the primary array.

2. On the primary array, stop the remote copy group manually:
```sh
$ stoprcopygroup <RCG_Name>
```

3. On the secondary array, execute *failover* command:
```sh
$ setrcopygroup failover <RCG_Name_On_Secondary_Array>
```

4. Restart the container. This time the VLUNs would be served by the failed-over or secondary array

### Failback workflow for Active/Passive based replication ###
There is no single Docker command or option to support failback of a RCG. Instead,
following steps must be carried out in order to do it:
1. On the host, the container using the replicated volume must be stopped or exited if it is running.
This triggers unmount of the volume(s) from the failed-over or secondary array.

2. On the secondary array, execute *recover* and *restore* commands:
```sh
$ setrcopygroup recover <RCG_Name_On_Secondary_Array>
$ setrcopygroup restore <RCG_Name_On_Secondary_Array>
```

3. Restart the container so that the primary array exports VLUNs to the host this time.


### Delete replicated volume ###
```sh
$ docker volume rm <volume_name>
```
This command allows the user to delete a replicated volume. If this was the last
volume present in RCG then the RCG is also removed from the backend.


**See also:**
[Peer Persistence Based Replication](peer-persistence-based-replication.md)
Loading