diff --git a/.travis.yml b/.travis.yml index 1babaed0..c9ba8436 100644 --- a/.travis.yml +++ b/.travis.yml @@ -58,35 +58,35 @@ jobs: ## Define the rest of the matrix based on Kitchen testing # Make sure the instances listed below match up with # the `platforms` defined in `kitchen.yml` - - env: INSTANCE=default-debian-10-master-py3 - # - env: INSTANCE=default-ubuntu-1804-master-py3 - # - env: INSTANCE=centarch-centos-8-master-py3 + # - env: INSTANCE=default-debian-10-master-py3 + - env: INSTANCE=default-ubuntu-1804-master-py3 + - env: INSTANCE=centos-centos-8-master-py3 # - env: INSTANCE=default-fedora-31-master-py3 - # - env: INSTANCE=default-opensuse-leap-151-master-py3 - # - env: INSTANCE=default-amazonlinux-2-master-py3 + - env: INSTANCE=default-opensuse-leap-151-master-py3 + - env: INSTANCE=default-amazonlinux-2-master-py3 # - env: INSTANCE=default-debian-10-2019-2-py3 # - env: INSTANCE=default-debian-9-2019-2-py3 - - env: INSTANCE=default-ubuntu-1804-2019-2-py3 - # - env: INSTANCE=centarch-centos-8-2019-2-py3 + # - env: INSTANCE=default-ubuntu-1804-2019-2-py3 + # - env: INSTANCE=centos-centos-8-2019-2-py3 # - env: INSTANCE=default-fedora-31-2019-2-py3 - - env: INSTANCE=default-opensuse-leap-151-2019-2-py3 - # - env: INSTANCE=centarch-centos-7-2019-2-py2 - - env: INSTANCE=default-amazonlinux-2-2019-2-py3 - # - env: INSTANCE=centarch-arch-base-latest-2019-2-py2 + # - env: INSTANCE=default-opensuse-leap-151-2019-2-py3 + # - env: INSTANCE=centos-centos-7-2019-2-py2 + # - env: INSTANCE=default-amazonlinux-2-2019-2-py3 + - env: INSTANCE=arch-arch-base-latest-2019-2-py2 # - env: INSTANCE=default-fedora-30-2018-3-py3 # - env: INSTANCE=default-debian-9-2018-3-py2 # - env: INSTANCE=default-ubuntu-1604-2018-3-py2 - # - env: INSTANCE=centarch-centos-7-2018-3-py2 + # - env: INSTANCE=centos-centos-7-2018-3-py2 # - env: INSTANCE=default-opensuse-leap-151-2018-3-py2 # - env: INSTANCE=default-amazonlinux-1-2018-3-py2 - - env: INSTANCE=centarch-arch-base-latest-2018-3-py2 + - env: INSTANCE=arch-arch-base-latest-2018-3-py2 # - env: INSTANCE=default-debian-8-2017-7-py2 # - env: INSTANCE=default-ubuntu-1604-2017-7-py2 - # - env: INSTANCE=centarch-centos-6-2017-7-py2 + # - env: INSTANCE=centos-centos-6-2017-7-py2 # - env: INSTANCE=default-fedora-30-2017-7-py2 # - env: INSTANCE=default-opensuse-leap-151-2017-7-py2 # - env: INSTANCE=default-amazonlinux-1-2017-7-py2 - # - env: INSTANCE=centarch-arch-base-latest-2017-7-py2 + # - env: INSTANCE=arch-arch-base-latest-2017-7-py2 ## Define the release stage that runs `semantic-release` - stage: 'release' diff --git a/docs/README.rst b/docs/README.rst index abf8fae5..e5906383 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -33,20 +33,23 @@ which contains the currently released version. This formula is versioned accordi See `Formula Versioning Section `_ for more details. -Contributing to this repo -------------------------- - -**Commit message formatting is significant!!** +Special Nodes +------------- -Please see `How to contribute `_ for more details. +The scope of this formula is Ethernet/Block -Scope = Ethernet/Block ----------------------- .. image:: link-transport-storage-protocols.png :target: https://github.com/saltstack-formulas/iscsi-formula :scale: 15 % :alt: Link/Transport and Storage protocol infographic +Contributing to this repo +------------------------- + +**Commit message formatting is significant!!** + +Please see `How to contribute `_ for more details. + Available Meta states --------------------- diff --git a/iscsi/initiator/service/install.sls b/iscsi/initiator/service/install.sls index dfe159ef..3eb87de6 100644 --- a/iscsi/initiator/service/install.sls +++ b/iscsi/initiator/service/install.sls @@ -29,11 +29,19 @@ iscsi-initiator-service-install-file-line-freebsd: iscsi-initiator-service-install-service-running: {%- if not iscsi.initiator.enabled %} service.dead: + {%- if servicename is iterable and servicename is not string %} + - names: {{ servicename|json }} + {%- else %} - name: {{ servicename }} + {%- endif %} - enable: False {%- else %} service.running: + {%- if servicename is iterable and servicename is not string %} + - names: {{ servicename|json }} + {%- else %} - name: {{ servicename }} + {%- endif %} - enable: True - onfail_in: - test: iscsi-initiator-service-install-check-status @@ -44,11 +52,6 @@ iscsi-initiator-service-install-service-running: - file: iscsi-initiator-config-install-file-managed {%- endif %} {%- endif %} - {%- if servicename is iterable and servicename is not string %} - - names: {{ servicename|json }} - {%- else %} - - name: {{ servicename }} - {%- endif %} iscsi-initiator-service-install-check-status: test.show_notification: @@ -56,12 +59,24 @@ iscsi-initiator-service-install-check-status: In certain circumstances the iscsi initiator service will not start. * your configuration file may be incorrect. * your kernel was upgraded but not activated by reboot + {%- if servicename is iterable and servicename is not string %} + {%- for svc in servicename %} + 'systemctl enable {{ svc }}' && reboot + {%- endfor %} + {%- else %} 'systemctl enable {{ servicename }}' && reboot - - unless: {{ grains.os_family in ('MacOS', 'Windows') }} #maybe not needed but no harm + {%- endif %} cmd.run: - names: + {%- if servicename is iterable and servicename is not string %} + {%- for svc in servicename %} + - journalctl -xe -u {{ svc }} || true + - systemctl status {{ svc }} -l || true + {%- endfor %} + {%- else %} - journalctl -xe -u {{ servicename }} || true - systemctl status {{ servicename }} -l || true + {%- endif %} - /sbin/lsmod 2>/dev/null || true - ls /var/lib/iscsi/nodes 2>/dev/null || true - ls /sys/class/iscsi_session 2>/dev/null || true diff --git a/iscsi/isns/service/install.sls b/iscsi/isns/service/install.sls index ff78cbdc..f2b780fe 100644 --- a/iscsi/isns/service/install.sls +++ b/iscsi/isns/service/install.sls @@ -44,10 +44,22 @@ iscsi-isns-service-install-check-status: In certain circumstances the iscsi isns service will not start. * your configuration file may be incorrect. * your kernel was upgraded but not activated by reboot + {%- if servicename is iterable and servicename is not string %} + {%- for svc in servicename %} + 'systemctl enable {{ svc }}' && reboot + {%- endfor %} + {%- else %} 'systemctl enable {{ servicename }}' && reboot - - unless: {{ grains.os_family in ('MacOS', 'Windows') }} #maybe not needed but no harm + {%- endif %} cmd.run: - names: + {%- if servicename is iterable and servicename is not string %} + {%- for svc in servicename %} + - journalctl -xe -u {{ svc }} || true + - systemctl status {{ svc }} -l || true + {%- endfor %} + {%- else %} - journalctl -xe -u {{ servicename }} || true - systemctl status {{ servicename }} -l || true + {%- endif %} - onlyif: test -x /usr/bin/systemctl || test -x /bin/systemctl || test -x /sbin/systemctl diff --git a/iscsi/osfamilymap.yaml b/iscsi/osfamilymap.yaml index 4f4b2a8c..74b5cbb2 100644 --- a/iscsi/osfamilymap.yaml +++ b/iscsi/osfamilymap.yaml @@ -44,7 +44,6 @@ RedHat: pkgs: wanted: - isns-utils - - yum-plugin-versionlock initiator: pkgs: wanted: @@ -112,6 +111,7 @@ Arch: initiator: pkgs: wanted: + - file - binutils - fakeroot - open-iscsi @@ -124,10 +124,12 @@ Arch: loadmodule: true pkgs: wanted: + - file + - python-urwid - binutils - fakeroot - linux-lts # For kernel scsi modules - - python-pip # makepkg states needs 'gitpython'. + # python-pip # makepkg states needs 'gitpython'. - thin-provisioning-tools make: gitrepo: https://aur.archlinux.org diff --git a/iscsi/osfingermap.yaml b/iscsi/osfingermap.yaml index 7b04e5d0..2a07aacc 100644 --- a/iscsi/osfingermap.yaml +++ b/iscsi/osfingermap.yaml @@ -12,6 +12,10 @@ --- # os: CentOS CentOS-6: + isns: + pkgs: + wanted: + - yum-plugin-versionlock target: provider: tgtd pkgs: @@ -26,6 +30,10 @@ CentOS-6: tgtd: tgtd CentOS-7: + isns: + pkgs: + wanted: + - yum-plugin-versionlock initiator: pkgs: wanted: @@ -56,7 +64,6 @@ CentOS-8: loadmodule: true pkgs: wanted: - - yum-plugin-versionlock - targetcli - libvirt-daemon-driver-storage-iscsi - libvirt-daemon-driver-storage-iscsi-direct diff --git a/iscsi/osmap.yaml b/iscsi/osmap.yaml index 6bdae185..9e114117 100644 --- a/iscsi/osmap.yaml +++ b/iscsi/osmap.yaml @@ -68,12 +68,9 @@ CentOS: pkgs: wanted: - device-mapper-persistent-data - - netbsd-iscsi - - yum-plugin-versionlock - targetcli - libvirt-daemon-driver-storage-iscsi - udisks2-iscsi - - scsi-target-utils - fcoe-utils # os_family: Suse diff --git a/iscsi/target/make/install.sls b/iscsi/target/make/install.sls index e2b112a9..9924beea 100644 --- a/iscsi/target/make/install.sls +++ b/iscsi/target/make/install.sls @@ -42,13 +42,26 @@ iscsi-target-make-{{ pkg }}-git-latest: - require: - file: iscsi-target-make-file-directory + {# workaround https://github.com/saltstack-formulas/iscsi-formula/issues/34 #} + + {%- if pkg == 'python-configshell-fb' %} + {%- for file in ('.SRCINFO', 'pkg/python2-configshell-fb/.PKGINFO', 'PKGBUILD') %} +iscsi-target-make-{{ pkg }}-workaround-{{ file }}: + file.replace: + - name: /home/{{ iscsi.user }}/{{ pkg }}/{{ file }} + - onlyif: test -f /home/{{ iscsi.user }}/{{ pkg }}/{{ file }} + - pattern: python2-urwid + - repl: python-urwid + - require_in: + - cmd: iscsi-target-make-{{ pkg }}-cmd-run + {%- endfor %} + {%- endif %} + iscsi-target-make-{{ pkg }}-cmd-run: cmd.run: - cwd: /home/{{ iscsi.user }}/{{ pkg }} - name: {{ iscsi.target.make.cmd }} - runas: {{ iscsi.user }} - - onchanges: - - git: iscsi-target-make-{{ pkg }}-git-latest - require: - git: iscsi-target-make-{{ pkg }}-git-latest - require_in: diff --git a/iscsi/target/service/install.sls b/iscsi/target/service/install.sls index 3290d225..72b0b731 100644 --- a/iscsi/target/service/install.sls +++ b/iscsi/target/service/install.sls @@ -30,11 +30,19 @@ iscsi-target-service-install-file-line-freebsd: iscsi-target-service-install-service-running: {%- if not iscsi.target.enabled %} service.dead: + {%- if servicename is iterable and servicename is not string %} + - names: {{ servicename|json }} + {%- else %} - name: {{ servicename }} + {%- endif %} - enable: False {%- else %} service.running: + {%- if servicename is iterable and servicename is not string %} + - names: {{ servicename|json }} + {%- else %} - name: {{ servicename }} + {%- endif %} - enable: True - onfail_in: - test: iscsi-target-service-install-check-status @@ -46,11 +54,6 @@ iscsi-target-service-install-service-running: - file: iscsi-target-config-install-file-managed {%- endif %} {%- endif %} - {%- if servicename is iterable and servicename is not string %} - - names: {{ servicename|json }} - {%- else %} - - name: {{ servicename }} - {%- endif %} - unless: {{ grains.os in ('Amazon', 'MacOS') }} - onlyif: {{ iscsi.target.enabled }} @@ -60,12 +63,24 @@ iscsi-target-service-install-check-status: In certain circumstances the iscsi target service will not start. * your configuration file may be incorrect. * your kernel was upgraded but not activated by reboot + {%- if servicename is iterable and servicename is not string %} + {%- for svc in servicename %} + 'systemctl enable {{ svc }}' && reboot + {%- endfor %} + {%- else %} 'systemctl enable {{ servicename }}' && reboot - - unless: {{ grains.os_family in ('MacOS', 'Windows') }} #maybe not needed but no harm + {%- endif %} cmd.run: - names: - - echo "-- {{ iscsi.target.enabled }} --" + {%- if servicename is iterable and servicename is not string %} + {%- for svc in servicename %} + - journalctl -xe -u {{ svc }} || true + - systemctl status {{ svc }} -l || true + {%- endfor %} + {%- else %} - journalctl -xe -u {{ servicename }} || true - systemctl status {{ servicename }} -l || true + {%- endif %} + - echo "--enabled? {{ iscsi.target.enabled }} --" - /sbin/lsmod 2>/dev/null || true - onlyif: test -x /usr/bin/systemctl || test -x /bin/systemctl || test -x /sbin/systemctl diff --git a/kitchen.yml b/kitchen.yml index bff3108e..1c86a671 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -186,15 +186,42 @@ suites: verifier: inspec_tests: - path: test/integration/default - - name: centarch + - name: centos includes: - centos-8-master-py3 - centos-8-2019-2-py3 - centos-7-2019-2-py2 - - arch-base-latest-2019-2-py2 - centos-7-2018-3-py2 - - arch-base-latest-2018-3-py2 - centos-6-2017-7-py2 + provisioner: + state_top: + base: + '*': + - lvm.install + - lvm.files.create + - lvm.pv.create + - iscsi + - iscsi.clean + pillars: + top.sls: + base: + '*': + - lvm + - iscsi + pillars_from_files: + lvm.sls: test/salt/pillar/lvm.centos + iscsi.sls: test/salt/pillar/pillar.centos + dependencies: + - name: lvm + repo: git + source: https://github.com/saltstack-formulas/lvm-formula.git + verifier: + inspec_tests: + - path: test/integration/default + - name: arch + includes: + - arch-base-latest-2019-2-py2 + - arch-base-latest-2018-3-py2 - arch-base-latest-2017-7-py2 provisioner: state_top: @@ -216,7 +243,7 @@ suites: pillars_from_files: users.sls: test/salt/pillar/users.arch lvm.sls: test/salt/pillar/lvm.example - iscsi.sls: test/salt/pillar/pillar.travis + iscsi.sls: test/salt/pillar/pillar.arch dependencies: - name: users repo: git diff --git a/test/salt/pillar/lvm.centos b/test/salt/pillar/lvm.centos new file mode 100644 index 00000000..28b2ac7e --- /dev/null +++ b/test/salt/pillar/lvm.centos @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +lvm: + files: + remove: + - /tmp/loopdevs/testfile0.img + - /tmp/loopdevs/testfile1.img + - /tmp/loopdevs/testfile2.img + create: + dd: + /tmp/loopdevs/testfile0.img: + options: + if: /dev/urandom + bs: 1024 + count: 307200 + /tmp/loopdevs/testfile1.img: + options: + if: /dev/urandom + bs: 1024 + count: 307200 + /tmp/loopdevs/testfile2.img: + options: + if: /dev/urandom + bs: 1024 + count: 307200 + losetup: + /tmp/loopdevs/testfile0.img: {} + /tmp/loopdevs/testfile1.img: {} + /tmp/loopdevs/testfile2.img: {} + pv: + create: + /dev/loop5: {} + /dev/loop6: {} + /dev/loop7: {} diff --git a/test/salt/pillar/lvm.example b/test/salt/pillar/lvm.example index d6260382..28b2ac7e 100644 --- a/test/salt/pillar/lvm.example +++ b/test/salt/pillar/lvm.example @@ -7,7 +7,6 @@ lvm: - /tmp/loopdevs/testfile0.img - /tmp/loopdevs/testfile1.img - /tmp/loopdevs/testfile2.img - - /tmp/loopdevs/testfile3.img create: dd: /tmp/loopdevs/testfile0.img: @@ -25,19 +24,12 @@ lvm: if: /dev/urandom bs: 1024 count: 307200 - /tmp/loopdevs/testfile3.img: - options: - if: /dev/urandom - bs: 1024 - count: 307200 losetup: /tmp/loopdevs/testfile0.img: {} /tmp/loopdevs/testfile1.img: {} /tmp/loopdevs/testfile2.img: {} - /tmp/loopdevs/testfile3.img: {} pv: create: - /dev/loop4: {} /dev/loop5: {} /dev/loop6: {} /dev/loop7: {} diff --git a/test/salt/pillar/pillar.travis b/test/salt/pillar/pillar.arch similarity index 99% rename from test/salt/pillar/pillar.travis rename to test/salt/pillar/pillar.arch index 4af14a8e..8269375e 100644 --- a/test/salt/pillar/pillar.travis +++ b/test/salt/pillar/pillar.arch @@ -47,7 +47,7 @@ iscsi: targetname: 'iqn.1900.com.com:sn.123456' initiatorname: 'iqn.2005-01.il.ac.huji.cs:nobody' authmethod: CHAP - chapiname : 'iqn.2005-01.il.ac.huji.cs:nobody' + chapiname: 'iqn.2005-01.il.ac.huji.cs:nobody' chapsecret: secretsecret example01: targetname: 'iqn.2018-07.com.example.iscsi:example01' @@ -130,7 +130,7 @@ iscsi: 'direct-store /dev/loop6': vendor_id: VENDOR2 lun: 2 - 'backing-store /dev/loop7': + 'backing-store /dev/loop7': vendor_id: back1 scsi_sn: SERIAL write-cache: 'on' diff --git a/test/salt/pillar/pillar.centos b/test/salt/pillar/pillar.centos new file mode 100644 index 00000000..0e7044af --- /dev/null +++ b/test/salt/pillar/pillar.centos @@ -0,0 +1,580 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +iscsi: + target: + enabled: false # skip service.running state (for travis) + config: + data: + open-iscsi: + # https://github.com/open-iscsi/open-iscsi/blob/master/etc/iscsid.conf + node.startup: manual + node.leading_login: 'No' + node.session.timeo.replacement_timeout: 120 + node.conn[0].timeo.login_timeout: 15 + node.conn[0].timeo.logout_timeout: 15 + node.conn[0].timeo.noop_out_interval: 5 + node.conn[0].timeo.noop_out_timeout: 5 + node.session.err_timeo.abort_timeout: 15 + node.session.err_timeo.lu_reset_timeout: 30 + node.session.err_timeo.tgt_reset_timeout: 30 + node.session.initial_login_retry_max: 8 + node.session.cmds_max: 128 + node.session.queue_depth: 32 + node.session.xmit_thread_priority: -20 + node.session.iscsi.InitialR2T: 'No' + node.session.iscsi.ImmediateData: 'Yes' + node.session.iscsi.FirstBurstLength: 262144 + node.session.iscsi.MaxBurstLength: 16776192 + node.conn[0].iscsi.MaxRecvDataSegmentLength: 262144 + node.conn[0].iscsi.MaxXmitDataSegmentLength: 0 + discovery.sendtargets.iscsi.MaxRecvDataSegmentLength: 32768 + node.session.nr_sessions: 1 + node.session.iscsi.FastAbort: 'Yes' + node.session.scan: auto + + iscsi: # freeBSD + # https://www.freebsd.org/cgi/man.cgi?query=iscsi.conf&sektion=5&manpath=FreeBSD+10-current + node.startup: automatic + myiscsi: # nickname + targetaddress: iscsi1 + targetname: 'iqn.1900.com.com:sn.123456' + myiscsi6: + targetaddress: '[2001:db8::de:ef]:3260' + targetname: 'iqn.1900.com.com:sn.123456' + chaptest: + targetaddress: 10.0.0.1 + targetname: 'iqn.1900.com.com:sn.123456' + initiatorname: 'iqn.2005-01.il.ac.huji.cs:nobody' + authmethod: CHAP + chapiname: 'iqn.2005-01.il.ac.huji.cs:nobody' + chapsecret: secretsecret + example01: + targetname: 'iqn.2018-07.com.example.iscsi:example01' + targetAddress: '10.10.10.10' + data: + targetname: 'naa.50015178f369f092' + targetAddress: data1.example.com + chapIName: user + chapSecret: secretsecret + secret: + targetname: 'iqn.2018-07.com.example.iscsi:secretdata' + targetAddress: creditcards.example.com + authMethod: CHAP + chapIName: 'iqn.2018-07.com.example.iscsi:trustedguy' + chapSecret: secretsecret + + ietd: + # http://manpages.ubuntu.com/manpages/trusty/man5/ietd.conf.5.html + IncomingUser: joe secret + OutgoingUser: jack secret2 + 'Target iqn.2001-04.com.example:storage.disk2.sys1.xyz': + IncomingUser: jim othersecret + OutgoingUser: james yetanothersecret + 'Lun 0': Path=/dev/sdc,Type=fileio + 'Lun 1': Blocks=10000,BlockSize=4096,Type=nullio + Alias: Test + HeaderDigest: None + DataDigest: None + MaxConnections: 1 + MaxSessions: 0 + InitialR2T: 'Yes' + ImmediateData: 'No' + MaxRecvDataSegmentLength: 8192 + MaxXmitDataSegmentLength: 8192 + MaxBurstLength: 262144 + FirstBurstLength: 65536 + DefaultTime2Wait: 2 + DefaultTime2Retain: 0 + MaxOutstandingR2T: 8 + NOPInterval: 0 + NOPTimeout: 0 + DataPDUInOrder: 'Yes' + DataSequenceInOrder: 'Yes' + ErrorRecoveryLevel: 0 + + isnsadm: {} + isnsdd: {} + isnsd: + # https://manpages.debian.org/testing/open-isns-server/isnsd.conf.5.en.html + Database: /var/lib/isns + RegistrationPeriod: 10m + DefaultDiscoveryDomain: 1 + SLPRegister: 1 + ClientKeyStore: 'DB:' + SCNTimeout: 60 + SCNRetries: 3 + ESIMinInterval: 1m + ESIMaxInterval: 2m + ESIRetries: 3 + Auth.ReplayWindow: 2m + Auth.TimeStampJitter: 1s + + tgtd: + # https://linux.die.net/man/5/targets.conf + # https://github.com/fujita/tgt/blob/master/conf/examples/targets.conf.example + include: '/etc/tgt/salt/*.conf' + default-driver: iscsi + # iSNSServerIP: 127.0.0.1 + # iSNSServerPort: 3205 + # iSNSAccessControl: 'Off' + # iSNS: 'Off' + 'target iqn.2008-09.com.example:server.target1': + backing-store: /dev/loop5 + 'target iqn.2008-09.com.example:server.target5': + 'direct-store /dev/loop6': + vendor_id: VENDOR1 + removable: 1 + device-type: cd + lun: 1 + 'backing-store /dev/loop7': + vendor_id: back1 + scsi_sn: SERIAL + write-cache: 'on' + + lio: + # https://www.systutorials.com/docs/linux/man/5-saveconfig.json + # https://bugzilla.redhat.com/show_bug.cgi?id=1643673 + # https://github.com/open-iscsi/rtslib-fb/issues/5 + # ---------------------------------------------------------------------- + # The sample below is complex because its used for verification. + # You should only use the minimal pillar data for your needs. + # The format is important so review this example carefully. + # + # Multiple objects are supported: + # See: https://github.com/saltstack-formulas/iscsi-formula/issues/19 + # ---------------------------------------------------------------------- + fabric_modules: + callmewhateveryoulike0: + discovery_enable_auth: 'true' + discovery_mutual_password: itsreallyme + discovery_mutual_userid: target + discovery_password: letmein + discovery_userid: initiator + name: iscsi + callmewhateveryoulike1: + discovery_enable_auth: 'true' + discovery_mutual_password: itsreallysticky + storage_objects: + callmewhateveryoulike_sda: + alua_tpgs: + callemewhateveryoulike0: + alua_access_state: 0 + alua_access_status: 0 + alua_access_type: 3 + alua_support_active_nonoptimized: 1 + alua_support_active_optimized: 1 + alua_support_offline: 1 + alua_support_standby: 1 + alua_support_transitioning: 1 + alua_support_unavailable: 1 + alua_write_metadata: 0 + implicit_trans_secs: 0 + name: default_tg_pt_gp + nonop_delay_msecs: 100 + preferred: 0 + tg_pt_gp_id: 0 + trans_delay_msecs: 0 + callemewhateveryoulike1: + alua_access_state: 1 + alua_support_active_nonoptimized: 1 + attributes: + block_size: 512 + emulate_3pc: 1 + emulate_caw: 1 + emulate_dpo: 1 + emulate_fua_read: 1 + emulate_fua_write: 1 + emulate_model_alias: 1 + emulate_pr: 1 + emulate_rest_reord: 0 + emulate_tas: 1 + emulate_tpu: 0 + emulate_tpws: 0 + emulate_ua_intlck_ctrl: 0 + emulate_write_cache: 0 + enforce_pr_isids: 1 + force_pr_aptpl: 0 + is_nonrot: 1 + max_unmap_block_desc_count: 0 + max_unmap_lba_count: 0 + max_write_same_len: 65535 + optimal_sectors: 256 + pi_prot_format: 0 + pi_prot_type: 0 + pi_prot_verify: 0 + queue_depth: 64 + unmap_granularity: 0 + unmap_granularity_alignment: 0 + unmap_zeroes_data: 0 + dev: /dev/vxdd0 + name: sda + plugin: 'block' + readonly: 'false' + write_back: 'false' + wwn: '9e8d8049-3538-41cb-94e6-6dbd2f1cf090' + callmewhateveryoulike_sdb: + alua_tpgs: + callemewhateveryoulike0: + alua_access_state: 0 + alua_access_status: 0 + alua_access_type: 3 + alua_support_active_nonoptimized: 1 + alua_support_active_optimized: 1 + alua_support_offline: 1 + alua_support_standby: 1 + alua_support_transitioning: 1 + alua_support_unavailable: 1 + alua_write_metadata: 0 + implicit_trans_secs: 0 + name: default_tg_pt_gp + nonop_delay_msecs: 100 + preferred: 0 + tg_pt_gp_id: 0 + trans_delay_msecs: 0 + callemewhateveryoulike1: + alua_access_state: 1 + alua_support_active_nonoptimized: 1 + attributes: + block_size: 512 + emulate_3pc: 1 + emulate_caw: 1 + emulate_dpo: 1 + emulate_fua_read: 1 + emulate_fua_write: 1 + emulate_model_alias: 1 + emulate_pr: 1 + emulate_rest_reord: 0 + emulate_tas: 1 + emulate_tpu: 0 + emulate_tpws: 0 + emulate_ua_intlck_ctrl: 0 + emulate_write_cache: 0 + enforce_pr_isids: 1 + force_pr_aptpl: 0 + is_nonrot: 1 + max_unmap_block_desc_count: 0 + max_unmap_lba_count: 0 + max_write_same_len: 65535 + optimal_sectors: 256 + pi_prot_format: 0 + pi_prot_type: 0 + pi_prot_verify: 0 + queue_depth: 64 + unmap_granularity: 0 + unmap_granularity_alignment: 0 + unmap_zeroes_data: 0 + dev: /dev/vxdd1 + name: sdb + plugin: 'block' + readonly: 'false' + write_back: 'false' + wwn: '9e8d8049-3538-41cb-94e6-6dbd2f1cf091' + callmewhateveryoulike_sdc: + alua_tpgs: + callemewhateveryoulike0: + alua_access_state: 0 + alua_access_status: 0 + alua_access_type: 3 + alua_support_active_nonoptimized: 1 + alua_support_active_optimized: 1 + alua_support_offline: 1 + alua_support_standby: 1 + alua_support_transitioning: 1 + alua_support_unavailable: 1 + alua_write_metadata: 0 + implicit_trans_secs: 0 + name: default_tg_pt_gp + nonop_delay_msecs: 100 + preferred: 0 + tg_pt_gp_id: 0 + trans_delay_msecs: 0 + callemewhateveryoulike1: + alua_access_state: 1 + alua_support_active_nonoptimized: 1 + attributes: + block_size: 512 + emulate_3pc: 1 + emulate_caw: 1 + emulate_dpo: 1 + emulate_fua_read: 1 + emulate_fua_write: 1 + emulate_model_alias: 1 + emulate_pr: 1 + emulate_rest_reord: 0 + emulate_tas: 1 + emulate_tpu: 0 + emulate_tpws: 0 + emulate_ua_intlck_ctrl: 0 + emulate_write_cache: 0 + enforce_pr_isids: 1 + force_pr_aptpl: 0 + is_nonrot: 1 + max_unmap_block_desc_count: 0 + max_unmap_lba_count: 0 + max_write_same_len: 65535 + optimal_sectors: 256 + pi_prot_format: 0 + pi_prot_type: 0 + pi_prot_verify: 0 + queue_depth: 64 + unmap_granularity: 0 + unmap_granularity_alignment: 0 + unmap_zeroes_data: 0 + dev: /dev/vxdd2 + name: sdc + plugin: 'block' + readonly: 'false' + write_back: 'false' + wwn: '9e8d8049-3538-41cb-94e6-6dbd2f1cf092' + callmewhateveryoulike_sdd: + alua_tpgs: + callemewhateveryoulike0: + alua_access_state: 0 + alua_access_status: 0 + alua_access_type: 3 + alua_support_active_nonoptimized: 1 + alua_support_active_optimized: 1 + alua_support_offline: 1 + alua_support_standby: 1 + alua_support_transitioning: 1 + alua_support_unavailable: 1 + alua_write_metadata: 0 + implicit_trans_secs: 0 + name: default_tg_pt_gp + nonop_delay_msecs: 100 + preferred: 0 + tg_pt_gp_id: 0 + trans_delay_msecs: 0 + callemewhateveryoulike1: + alua_access_state: 1 + alua_support_active_nonoptimized: 1 + attributes: + block_size: 512 + emulate_3pc: 1 + emulate_caw: 1 + emulate_dpo: 1 + emulate_fua_read: 1 + emulate_fua_write: 1 + emulate_model_alias: 1 + emulate_pr: 1 + emulate_rest_reord: 0 + emulate_tas: 1 + emulate_tpu: 0 + emulate_tpws: 0 + emulate_ua_intlck_ctrl: 0 + emulate_write_cache: 0 + enforce_pr_isids: 1 + force_pr_aptpl: 0 + is_nonrot: 1 + max_unmap_block_desc_count: 0 + max_unmap_lba_count: 0 + max_write_same_len: 65535 + optimal_sectors: 256 + pi_prot_format: 0 + pi_prot_type: 0 + pi_prot_verify: 0 + queue_depth: 64 + unmap_granularity: 0 + unmap_granularity_alignment: 0 + unmap_zeroes_data: 0 + dev: /dev/vxdd3 + name: sdd + plugin: 'block' + readonly: 'false' + write_back: 'false' + wwn: '9e8d8049-3538-41cb-94e6-6dbd2f1cf093' + callmewhateveryoulike_sde: + alua_tpgs: + callemewhateveryoulike0: + alua_access_state: 0 + alua_access_status: 0 + alua_access_type: 3 + alua_support_active_nonoptimized: 1 + alua_support_active_optimized: 1 + alua_support_offline: 1 + alua_support_standby: 1 + alua_support_transitioning: 1 + alua_support_unavailable: 1 + alua_write_metadata: 0 + implicit_trans_secs: 0 + name: default_tg_pt_gp + nonop_delay_msecs: 100 + preferred: 0 + tg_pt_gp_id: 0 + trans_delay_msecs: 0 + callemewhateveryoulike1: + alua_access_state: 1 + alua_support_active_nonoptimized: 1 + attributes: + block_size: 512 + emulate_3pc: 1 + emulate_caw: 1 + emulate_dpo: 1 + emulate_fua_read: 1 + emulate_fua_write: 1 + emulate_model_alias: 1 + emulate_pr: 1 + emulate_rest_reord: 0 + emulate_tas: 1 + emulate_tpu: 0 + emulate_tpws: 0 + emulate_ua_intlck_ctrl: 0 + emulate_write_cache: 0 + enforce_pr_isids: 1 + force_pr_aptpl: 0 + is_nonrot: 1 + max_unmap_block_desc_count: 0 + max_unmap_lba_count: 0 + max_write_same_len: 65535 + optimal_sectors: 256 + pi_prot_format: 0 + pi_prot_type: 0 + pi_prot_verify: 0 + queue_depth: 64 + unmap_granularity: 0 + unmap_granularity_alignment: 0 + unmap_zeroes_data: 0 + dev: /dev/vxdd4 + name: sde + plugin: 'block' + readonly: 'false' + write_back: 'false' + wwn: '9e8d8049-3538-41cb-94e6-6dbd2f1cf094' + targets: + canada: + fabric: iscsi + tpgs: + attributes: + authentication: 0 + cache_dynamic_acls: 1 + default_cmdsn_depth: 16 + default_erl: 0 + demo_mode_discovery: 1 + demo_mode_write_protect: 0 + fabric_prot_type: 0 + generate_node_acls: 1 + login_keys_workaround: 1 + login_timeout: 15 + netif_timeout: 2 + prod_mode_write_protect: 0 + t10_pi: 0 + tpg_enabled_sendtargets: 1 + enable: 'true' + luns: + callmewhateveryoulike0: + alias: 'd6b1e8e70a' + alua_tg_pt_gp_name: default_tg_pt_gp + index: 0 + storage_object: /backstores/block/sda + callmewhateveryoulike1: + alias: 'd6b1e8e70b' + alua_tg_pt_gp_name: default_tg_pt_gp + index: 1 + storage_object: /backstores/block/sdb + callmewhateveryoulike2: + alias: 'd6b1e8e70c' + alua_tg_pt_gp_name: default_tg_pt_gp + index: 2 + storage_object: /backstores/block/sdc + callmewhateveryoulike3: + alias: 'd6b1e8e70d' + alua_tg_pt_gp_name: default_tg_pt_gp + index: 3 + storage_object: /backstores/block/sdd + callmewhateveryoulike4: + alias: 'd6b1e8e70e' + alua_tg_pt_gp_name: default_tg_pt_gp + index: 4 + storage_object: /backstores/block/sde + node_acls: + callmewhateveryoulike0: + attributes: + dataout_timeout: 3 + dataout_timeout_retries: 5 + default_erl: 0 + nopin_response_timeout: 5 + nopin_timeout: 5 + random_datain_pdu_offsets: 0 + random_datain_seq_offsets: 0 + random_r2t_offsets: 0 + chap_mutual_password: itsreallyme + chap_mutual_userid: target + chap_password: letmein + chap_userid: station4 + mapped_luns: + mappy0: + index: 0 + tpg_lun: 0 + write_protect: 0 + mappy1: + index: 1 + tpg_lun: 1 + write_protect: 0 + mappy2: + index: 2 + tpg_lun: 2 + write_protect: 0 + mappy3: + index: 3 + tpg_lun: 3 + write_protect: 0 + mappy4: + index: 4 + tpg_lun: 4 + write_protect: 0 + node_wwn: 'iqn.1994-05.com.redhat:station4' + tcq_depth: 16 + parameters: + AuthMethod: 'CHAP,None' + DataDigest: 'CRC32C,None' + DataPDUInOrder: 'Yes' + DataSequenceInOrder: 'Yes' + DefaultTime2Retain: 20 + DefaultTime2Wait: 2 + ErrorRecoveryLevel: 0 + FirstBurstLength: 65536 + HeaderDigest: 'CRC32C,None' + IFMarkInt: Reject + IFMarker: 'No' + ImmediateData: 'Yes' + InitialR2T: 'Yes' + luxembourg: + fabric: iscsi + tpgs: + attributes: + authentication: 0 + enable: 1 + luns: + callmewhateveryoulike0: + alias: 'd6b1e8e70a' + index: 0 + storage_object: /backstores/block/sda + callmewhateveryoulike1: + alias: 'd6b1e8e70b' + index: 1 + storage_object: /backstores/block/sdb + callmewhateveryoulike2: + alias: 'd6b1e8e70c' + index: 2 + storage_object: /backstores/block/sdc + callmewhateveryoulike3: + alias: 'd6b1e8e70d' + index: 3 + storage_object: /backstores/block/sdd + callmewhateveryoulike4: + alias: 'd6b1e8e70e' + index: 4 + storage_object: /backstores/block/sde + node_acls: + callmewhateveryoulike0: + attributes: + dataout_timeout: 3 + parameters: + TargetAlias: LIO Target + portals: + callmewhateveryoulike0: + ip_address: 10.0.2.254 + iser: 0 + tag: 2 + wwn: iqn.1996-04.lx.suse:01:a66aed20e2f3