{"id":21526357,"url":"https://github.com/netapp/puppet-eseries","last_synced_at":"2025-10-21T03:22:09.532Z","repository":{"id":25485189,"uuid":"28916090","full_name":"NetApp/puppet-eseries","owner":"NetApp","description":null,"archived":false,"fork":false,"pushed_at":"2017-10-17T15:57:02.000Z","size":228,"stargazers_count":2,"open_issues_count":2,"forks_count":8,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-04-23T12:39:04.062Z","etag":null,"topics":["netapp-public"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NetApp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-07T13:43:40.000Z","updated_at":"2024-01-29T18:00:02.000Z","dependencies_parsed_at":"2022-08-24T00:00:13.686Z","dependency_job_id":null,"html_url":"https://github.com/NetApp/puppet-eseries","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetApp%2Fpuppet-eseries","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetApp%2Fpuppet-eseries/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetApp%2Fpuppet-eseries/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetApp%2Fpuppet-eseries/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NetApp","download_url":"https://codeload.github.com/NetApp/puppet-eseries/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226116487,"owners_count":17575929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["netapp-public"],"created_at":"2024-11-24T01:44:43.209Z","updated_at":"2025-10-21T03:22:04.124Z","avatar_url":"https://github.com/NetApp.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# netapp_e\n\nThe NetApp E-Series module manages E-Series storage arrays using Puppet Network Device.\n\n## Requirements ##\n\n* SANtricity Web Service is used as a proxy between puppet and storage array\n* [Excon](https://github.com/excon/excon) - ruby http client \n\n## Usage ##\n\n```puppet\nnode 'puppet.node.local' {\n\n  #include class with to initialize default module parameters\n  include netapp_e\n  \n  #OR comment above default block and uncomment below block to include parameterized class for Windows Agents\n  #class{ 'netapp_e':\n  #    owner\t\t\t=\u003e \"administrator\",\n  #    group\t\t\t=\u003e \"administrators\",\n  #\t   mode\t\t\t\t=\u003e '0777',\n  #    device_conf_dir\t=\u003e \"C:\\Program Files\\Puppet Labs\\Puppet\\puppet\",\n  #}\n\n  #OR comment above default block and uncomment below block to include parameterized class for SUSE/Solaris Agents\n  #class{ 'netapp_e':\n  #    owner =\u003e root,\n  #    group =\u003e root,\n  #    device_conf_dir =\u003e '/etc/puppet',\n  #}\n  \n  #OR comment above default block and uncomment below block to include parameterized class for CentOS/Redhat\n  #class{ 'netapp_e':\n  #    owner =\u003e root,\n  #    group =\u003e root,\n  #}\n\n  #The below block will install/uninstall NetApp SANtricity Web Services Proxy on Linux Agent Node\n  class { 'netapp_e::web_proxy':\n      ensure \t      \t\t\t =\u003e 'installed', #Possible value for ensure 'installed' or 'absent'\n      install_file_name\t\t\t =\u003e 'webservice-01.20.7000.0005.bin', #Web Proxy Installation file kept in modules/netapp_e/files\n      install_file_location\t\t =\u003e '/opt', #This folder must exist on Agent Node\n\t  install_dependent_packages =\u003e 'yes', #Only if 'LSB' is not already installed on linux\n  }\n  \n  #OR\n  #Comment above linux block and uncomment below block to install/uninstall NetApp SANtricity Web Services Proxy on Windows Agent Node\n  #class { 'netapp_e::web_proxy':\n  #    ensure\t\t\t\t\t\t=\u003e 'installed', #Possible value for ensure 'installed' or 'absent'\n  #    install_file_name\t\t\t=\u003e 'webservice-01.20.3000.0005.exe', #Web Proxy Installation file kept in modules/netapp_e/files\n  #    install_file_location\t\t=\u003e 'H:/setup', #This folder must exist on Agent Node\n  #\t   install_dependent_packages\t=\u003e 'no', #No for windows agents always as windows don't need any LSB(Linux Standard Base) packages\n  #}\n\n  # Host/Domain name/IP address where SANtricity Web Proxy is installed or needs to be installed\n  $hostname = 'storage.device.local'\n  $username = 'rw'\n  $password = 'rw'\n  \n  #SANtricity web proxy puppet device configuration file name.\n  $proxy_device_config_file = 'proxy_device_config'\n\n  # The below block will create a puppet device configuration file on agent node which have connection details to SANtricity Web Proxy\n  netapp_e::config { $proxy_device_config_file:\n      username      =\u003e $username,\n      password      =\u003e $password,\n      url           =\u003e $hostname,\n      port          =\u003e '8080',\n      target        =\u003e \"${netapp_e::device_conf_dir}/device/${proxy_device_config_file}.conf\"\n  }\n\n  # Set up a cron job for running puppet device periodically for CentOS/Redhat Agent Nodes\n  cron { \"netappe-puppet-device-run\":\n      command \t   =\u003e \"puppet device --deviceconfig ${netapp_e::device_conf_dir}/device/${proxy_device_config_file}.conf -d\",\n      minute  \t   =\u003e fqdn_rand(60),\n\t  environment  =\u003e \"PATH=${::path}:/opt/puppetlabs/puppet/bin\"\n  }\n  # OR comment above block and uncomment below block to set up a cron job for running puppet device periodically for SUSE/Solaris Agent Nodes\n  #cron { \"netappe-puppet-device-run\":\n  #    command \t   =\u003e \"puppet device --deviceconfig ${netapp_e::device_conf_dir}/device/${proxy_device_config_file}\",\n  #    minute  \t   =\u003e fqdn_rand(60),\n  #   environment  =\u003e \"PATH=${::path}:/opt/puppet/bin\"\n  #}\n  \n  # OR comment above block and uncomment below block to set up a scheduled task for running puppet device periodically on Windows Agent Nodes\n  #scheduled_task { 'netappe-puppet-device-run':\n  #    ensure      =\u003e present,\n  #    command     =\u003e 'C:/\\\"Program Files\\\"/\\\"Puppet Labs\\\"/Puppet/bin/puppet.bat',\n  #    arguments   =\u003e \"device --deviceconfig ${netapp_e::device_conf_dir}/device/${proxy_device_config_file}.conf -d\",\n  #    user        =\u003e 'Administrator',\n  #    password    =\u003e 'password@123',\n  #    enabled     =\u003e true,\n  #    trigger     =\u003e {\n  #        schedule   =\u003e daily,\n  #        every      =\u003e 1,            # Specifies every other day. Defaults to 1 (every day).\n  #        start_date =\u003e '2015-11-05', # Defaults to 'today'\n  #        start_time =\u003e '18:12',      # Must be specified\n  #  }\n  #}\n\n  # Get firmware upgrade version file from pupper server onto puppet agent machine\n  # Use the below block while upgrading CFW or NVSRAM firmware\n  $firmware_file = 'firmware_filename.dlp'\n  file { $firmware_file:\n      ensure    =\u003e file,\n      path      =\u003e \"/root/${firmware_file}\", #agent machine path to download file from puppet server\n      mode      =\u003e '0777',\n      source    =\u003e \"puppet:///modules/netapp_e/${firmware_file}\", #Firmware .dlp file kept in modules/netapp_e/files\n  }\n\n}\n\n###\n# Configurations to be executed on NetApp Storage Arrays view SANtricity Web Proxy\n# Node name must be same as proxy device configuration file name given in parameter $proxy_device_config_file.\n# The proxy device configuration file will contain the host/domain name of SANtricity Web Proxy\n###\nnode 'proxy_device_config' {\n\n  $status = present\n  $storage_system = 'second'\n\n  netapp_e_storage_system {$storage_system:\n      ensure      =\u003e $status,\n      controllers =\u003e ['10.250.117.116', '10.250.117.117'],\n      password    =\u003e 'Password_1234',\n  }\n\n  netapp_e_storage_system {'third':\n      ensure      =\u003e $status,\n      controllers =\u003e ['10.250.117.114', '10.250.117.115'],\n  }\n\n  # We need to wait before storage-system will be fully initialized. \t\n  # We can use fact exported by the module: $::initialized_systems\n  # and postpone operations involving storage-system resource to next puppet run.\n  if $::initialized_systems and ($storage_system in $::initialized_systems) {\n\n    # Volume group\n    netapp_e_storage_pool {'raid5pool-second':\n      ensure        =\u003e $status,\n      storagesystem =\u003e $storage_system,\n      raidlevel     =\u003e 'raid5',\n      diskids       =\u003e [\n        '010000005000CCA0577B11A00000000000000000',\n        '010000005000CCA0577B13A40000000000000000',\n        '010000005000CCA0577B58700000000000000000',\n      ],\n    }\n\n    netapp_e_storage_pool {'raid5pool-third':\n      ensure        =\u003e $status,\n      storagesystem =\u003e 'third',\n      raidlevel     =\u003e 'raid5',\n      diskids       =\u003e [\n        '010000005000CCA0577D11A00000000000000000',\n        '010000005000CCA0577D13A40000000000000000',\n        '010000005000CCA0577D58700000000000000000',\n      ],\n    }\n\n    # Disk pool\n    netapp_e_storage_pool {'disk-pool-1':\n      ensure        =\u003e $status,\n      storagesystem =\u003e $storage_system,\n      raidlevel     =\u003e 'raidDiskPool',\n      diskids       =\u003e [\n        '010000005000CCA05763E8A80000000000000000',\n        '010000005000CCA05764AEF00000000000000000',\n        '010000005000CCA05767B06C0000000000000000',\n        '010000005000CCA05763E8A80000000000000000',\n        '010000005000CCA05764AEF00000000000000000',\n        '010000005000CCA05767B06C0000000000000000',\n        '010000005000CCA05763E8A80000000100000000',\n        '010000005000CCA05764AEF00000000200000000',\n        '010000005000CCA05767B06C0000000300000000',\n        '010000005000CCA05764AEF00000000400000000',\n        '010000005000CCA05767B06C0000000500000000',\n      ],\n    }\n\n    # Standard volume\n    netapp_e_volume {'volume-standard-second':\n      ensure        =\u003e $status,\n      storagesystem =\u003e $storage_system,\n      size          =\u003e 1,\n      storagepool   =\u003e 'raid5pool-second',\n      sizeunit      =\u003e 'gb',\n      segsize       =\u003e '512',\n    }\n\n    netapp_e_volume {'volume-standard-third':\n      ensure        =\u003e $status,\n      storagesystem =\u003e 'third',\n      size          =\u003e 1,\n      storagepool   =\u003e 'raid5pool-second',\n      sizeunit      =\u003e 'gb',\n      segsize       =\u003e '512',\n    }\n\n    # Thin volume\n    netapp_e_volume {'new-thin-volume':\n      ensure            =\u003e $status,\n      storagesystem     =\u003e $storage_system,\n      size              =\u003e 4,\n      sizeunit          =\u003e 'gb',\n      repositorysize    =\u003e 10,\n      maxrepositorysize =\u003e 15,\n      storagepool       =\u003e 'disk-pool-1',\n      thin              =\u003e true\n    }\n\n    # Volume copy\n    netapp_e_volume_copy {'new-copy-volume':\n      ensure               =\u003e $status,\n      storagesystem        =\u003e $storage_system,\n      source               =\u003e 'volume-standard-second',\n      target               =\u003e 'new-thin-volume',\n      copypriority         =\u003e 'priority3',\n      targetwriteprotected =\u003e false,\n      disablesnapshot      =\u003e true\n    }\n\n    # Hosts and Host Groups\n    netapp_e_host_group {'zone2':\n      ensure        =\u003e $status,\n      storagesystem =\u003e $storage_system,\n    }\n\n    $ports = [\n      {\n        type =\u003e 'iscsi',\n        port =\u003e 'iqn.1998-05.com.windows:cd42b74121212',\n        label =\u003e 'newone'\n      }\n    ]\n\n    netapp_e_host {'linux-test':\n      ensure        =\u003e $status,\n      typeindex     =\u003e 9,\n      storagesystem =\u003e $storage_system,\n      groupid       =\u003e 'zone2',\n      ports         =\u003e $ports,\n    }\n\n    # Lun map\t\n    netapp_e_map {'new-thin-volume':\n      ensure        =\u003e $status,\n      storagesystem =\u003e $storage_system,\n      lun           =\u003e 11,\n      source        =\u003e 'new-thin-volume',\n      target        =\u003e 'zone2',\n      type          =\u003e hostgroup\n    }\n\n    # Snapshot group\n    netapp_e_snapshot_group {'new-snapshot-group':\n      ensure         =\u003e $status,\n      storagesystem  =\u003e $storage_system,\n      storagepool    =\u003e 'disk-pool-1',\n      volume         =\u003e 'new-thin-volume',\n      repositorysize =\u003e 30,\n      warnthreshold  =\u003e 75,\n      policy         =\u003e 'purgepit',\n      limit          =\u003e 7\n    }\n\n    # Async Mirror Group\n    netapp_e_mirror_group {'new-mirror-group':\n      ensure            =\u003e $status,\n      primaryarray      =\u003e $storage_system,\n      secondaryarray    =\u003e 'third',\n      syncinterval      =\u003e 11,\n      syncthreshold     =\u003e 16,\n      recoverythreshold =\u003e 22,\n      repothreshold     =\u003e 43,\n    }\n\n    netapp_e_mirror_members {'new-mirror-members':\n      ensure          =\u003e $status,\n      primaryvolume   =\u003e 'volume-standard-second',\n      secondaryvolume =\u003e 'volume-standard-third',\n      mirror          =\u003e 'new-mirror-group'\n    }\n\n    #Consistancy Group\n    #Create\n    netapp_e_consistency_group {'CG-GROUP-Create':\n      ensure                    =\u003e $status,\n      consistencygroup          =\u003e 'CG_GROUP1',\n      storagesystem             =\u003e $storage_system,\n      fullwarnthresholdpercent  =\u003e 75,\n      autodeletethreshold       =\u003e 32,\n      repositoryfullpolicy      =\u003e 'purgepit',\n      rollbackpriority          =\u003e 'medium',\n    }\n\n    #Create\n    netapp_e_consistency_group {'CG-GROUP-Create':\n      ensure                    =\u003e $status,\n      consistencygroup          =\u003e 'CG_GROUP2',\n      storagesystem             =\u003e $storage_system,\n    }\n\n    #Update\n    netapp_e_consistency_group {'CG-GROUP-Update':\n      ensure                    =\u003e $status,\n      consistencygroup          =\u003e 'CG_GROUP2',\n      storagesystem             =\u003e $storage_system,\n      fullwarnthresholdpercent  =\u003e 80,\n      autodeletethreshold       =\u003e 30,\n      repositoryfullpolicy      =\u003e 'purgepit',\n      rollbackpriority          =\u003e 'medium',\n    } \n\n    #Delete\n    netapp_e_consistency_group {'CG-GROUP-Delete':\n      ensure                    =\u003e absent,\n      consistencygroup          =\u003e 'CG_GROUP1',\n      storagesystem             =\u003e $storage_system,\n    } \n\n    #Consistancy Group Member\n    #Add Member\n    netapp_e_consistency_members {'Add-Volume':\n        ensure           =\u003e $status,\n        volume           =\u003e 'Volume-1',\n        storagesystem    =\u003e $storage_system,\n        consistencygroup =\u003e 'CG-GROUP',\n        repositorypool   =\u003e 'Disk_Pool_1',\n        scanmedia        =\u003e true,\n        validateparity   =\u003e true,\n        repositorypercent =\u003e 10,\n    }\n\n    #Remove Member\n    netapp_e_consistency_members {'Remove-Volume':\n        ensure           =\u003e $status,\n        volume           =\u003e 'Volume-1',\n        storagesystem    =\u003e $storage_system,\n        consistencygroup =\u003e 'CG-GROUP',\n    } \n\n    $volumes = [{\n                  repositorypool    =\u003e 'Disk_Pool_1',\n                  volume            =\u003e 'Volume-1',\n                  scanmedia         =\u003e true,\n                  validateparity    =\u003e true,\n                  repositorypercent =\u003e 10,\n                },\n                {\n                  repositorypool    =\u003e 'Disk_Pool_1',\n                  volume            =\u003e 'Volume-2',\n                  scanmedia         =\u003e true,\n                  validateparity    =\u003e true,\n                  repositorypercent =\u003e 10,\n                }]\n\n    netapp_e_consistency_multiple_members{ 'ADD-BATCH-VOLUMES':\n        volumes             =\u003e $volumes,\n        storagesystem       =\u003e $storage_system,\n        consistencygroup    =\u003e 'CG-GROUP',\n    }\n\n    #Consistancy Group Snapshots\n    #Create Snapshot\n    netapp_e_consistency_group_snapshot {'CG-GROUP-Snap1':\n        ensure              =\u003e $status,\n        consistencygroup    =\u003e 'CG-GROUP',\n        storagesystem       =\u003e $storage_system,\n    }\n    \n    #Remove Oldest Snapshot\n    netapp_e_consistency_group_snapshot {'CG-GROUP-Snap1-Delete':\n        ensure              =\u003e absent,\n        consistencygroup    =\u003e 'CG-GROUP',\n        storagesystem       =\u003e $storage_system,\n    }\n\n    #Rollback Consistency Group to an Older Snapshot\n    netapp_e_consistency_group_rollback {'CG-555-Rollback':\n        snapshotnumber      =\u003e  53,\n        consistencygroup    =\u003e 'CG-555',\n        storagesystem       =\u003e $storage_system,\n    }\n\n    #Consistancy Group Snapshots Views\n    #Create Snapshot View for all volumes in the snapshot\n    netapp_e_consistency_group_snapshot_view {'CG-GROUP-View1':\n        ensure              =\u003e $status,\n        viewname            =\u003e'CG-GROUP-View1',\n        storagesystem       =\u003e $storage_system,\n        consistencygroup    =\u003e 'CG-GROUP',\n        snapshotnumber      =\u003e 74,\n        viewtype            =\u003e 'bySnapshot',\n        validateparity      =\u003e false,\n    }\n\n    #Create Snapshot View for a single volume in the snapshot\n    netapp_e_consistency_group_snapshot_view {'CG-GROUP-View2':\n        viewname            =\u003e'CG-GROUP-View2',\n        ensure              =\u003e $status,\n        storagesystem       =\u003e $storage_system,\n        consistencygroup    =\u003e 'CG-GROUP',\n        snapshotnumber      =\u003e 74,\n        viewtype            =\u003e 'byVolume',\n        volume              =\u003e 'Test-Vol-1',\n        validateparity      =\u003e false,\n        repositorypool      =\u003e 'DiskPool1',\n        scanmedia           =\u003e true,\n        repositorypercent   =\u003e 75,\n        accessmode          =\u003e 'readWrite',\n\n    }\n\n    #Consistancy Group Snapshots Views\n    #Remove Snapshot View\n    netapp_e_consistency_group_snapshot_view {'CG-GROUP-View1-Delete':\n        viewname            =\u003e'CG-GROUP-View1',\n        ensure              =\u003e absent,\n        storagesystem       =\u003e $storage_system,\n        consistencygroup    =\u003e 'CG-GROUP',\n    }\n\n    $firmware_file = 'N5468-820834-DB5.dlp'\n\n    #Upload firmware file\n    netapp_e_firmware_file{ 'upload_firmware_file':\n        filename            =\u003e $firmware_file,\n        folderlocation      =\u003e 'C://upgrade', #agent machine path where firmware file downloaded from puppet server\n        ensure              =\u003e $status, \n        validate_file       =\u003e true,\n    }\n\n    #Delete firmware file\n    netapp_e_firmware_file{ 'delete_firmware_file':\n        ensure              =\u003e 'absent', \n        filename            =\u003e $firmware_file,\n    }\n\n    #Upgrade nvsram firmware with compatibility check skipping and mel check and waiting for completion until execution of next resource\n    netapp_e_firmware_upgrade{ 'upgrade_firmware' :\n        ensure              =\u003e 'upgraded',\n        storagesystem       =\u003e $storage_system,\n        filename            =\u003e $firmware_file,\n        firmwaretype        =\u003e 'nvsramfile',\n        melcheck            =\u003e true,\n        compatibilitycheck  =\u003e true,\n        releasedbuildonly   =\u003e true,\n        waitforcompletion   =\u003e true,\n    }\n\n    # Upgrade cfw firmware skipping mel check and without compatibility check and not waiting for completion of execution of the resource\n    netapp_e_firmware_upgrade{ 'upgrade_firmware' :\n        ensure              =\u003e 'upgraded',\n        storagesystem       =\u003e $storage_system,\n        filename            =\u003e $firmware_file,\n        firmwaretype        =\u003e 'cfwfile',\n        melcheck            =\u003e false,\n        compatibilitycheck  =\u003e false,\n        waitforcompletion   =\u003e false,\n    }\n\n    #Stage nvsram firmware with compatibility check skipping and mel check and waiting for completion until execution of next resource\n    netapp_e_firmware_upgrade{ 'stage_firmware' :\n        ensure              =\u003e 'staged',\n        storagesystem       =\u003e $storage_system,\n        filename            =\u003e $firmware_file,\n        firmwaretype        =\u003e 'nvsramfile',\n        melcheck            =\u003e true,\n        compatibilitycheck  =\u003e true,\n        releasedbuildonly   =\u003e true,\n        waitforcompletion   =\u003e true,\n    }\n\n    #Stage cfw firmware skipping mel check and without compatibility check and not waiting for completion of execution of the resource\n    netapp_e_firmware_upgrade{ 'stage_firmware' :\n        ensure              =\u003e 'staged',\n        storagesystem       =\u003e $storage_system,\n        filename            =\u003e $firmware_file,\n        firmwaretype        =\u003e 'cfwfile',\n        melcheck            =\u003e false,\n        compatibilitycheck  =\u003e false,\n        waitforcompletion   =\u003e false,\n    }\n\n    #Activate nvsram firmware skipping mel check and waiting for completion until execution of next resource\n    netapp_e_firmware_upgrade{ 'activate_firmware' :\n        ensure              =\u003e 'activated',\n        storagesystem       =\u003e $storage_system,\n        firmwaretype        =\u003e 'nvsramfile',\n        melcheck            =\u003e false,\n        waitforcompletion   =\u003e true,\n    }\n\n    #Activate cfw firmware with mel check and without waiting for completion of execution of this resource\n    netapp_e_firmware_upgrade{ 'activate_firmware' :\n        ensure              =\u003e 'activated',\n        storagesystem       =\u003e $storage_system,\n        firmwaretype        =\u003e 'cfwfile',\n        melcheck            =\u003e true,\n        waitforcompletion   =\u003e false,\n    }\n\n    #Upgrade NetApp SANtricity Web Services Proxy\n    #Download and install new version\n    netapp_e_web_proxy_upgrade{ 'upgrade_web_proxy':\n        ensure  =\u003e 'upgraded',\n        force   =\u003e 'true',\n    }\n\n    #Stage NetApp SANtricity Web Services Proxy\n    #Stage new version\n    netapp_e_web_proxy_upgrade{ 'stage_web_proxy':\n        ensure  =\u003e 'staged',\n        force   =\u003e 'true',\n    }\n\n    #Activate staged version of Santricity Web Proxy Server\n    netapp_e_web_proxy_upgrade{ 'activate_web_proxy':\n        ensure  =\u003e 'activated',\n    }\n\n    $diskIds = [ \"010000005001E8200002D1A80000000000000000\",\n                 \"010000005001E8200002D20C0000000000000000\"]\n    #Flash Cache\n    #Create Flash Cache\n    netapp_e_flash_cache {'createBlock':\n        ensure                =\u003e created,\n        cachename             =\u003e 'SSD_1',\n        storagesystem         =\u003e $storage_system,\n        diskids               =\u003e  $diskIds,\n        enableexistingvolumes =\u003e  false,\n    }\n\n    #Suspend Flash Cache\n    netapp_e_flash_cache {'suspendBlock':\n        ensure               =\u003e suspended,\n        cachename            =\u003e 'SSD_1',\n        storagesystem        =\u003e $storage_system,\n        ignorestate          =\u003e false,\n    }\n\n    #Resume Flash Cache\n    netapp_e_flash_cache {'ResumeBlock':\n        ensure               =\u003e resumed,\n        cachename            =\u003e 'SSD_1',\n        storagesystem        =\u003e $storage_system,\n        ignorestate          =\u003e true,\n    }\n\n    #Update Flash Cache\n    netapp_e_flash_cache {'updateBlock':\n        ensure              =\u003e updated,\n        cachename           =\u003e 'SSD_1',\n        storagesystem       =\u003e $storage_system,\n        newname             =\u003e 'SSD_12',\n        configtype          =\u003e 'database',\n    }\n\n    #Delete Flash Cache\n    netapp_e_flash_cache {'deleteBlock':\n        ensure              =\u003e deleted,\n        cachename           =\u003e 'SSD_1',\n        storagesystem       =\u003e $storage_system,\n    }\n  \n    #Flash Cache Drives\n    #Add flash Cache drives\n    netapp_e_flash_cache_drives {'addFlashCacheDrives':\n        ensure              =\u003e present,\n        cachename           =\u003e 'SSD_1',\n        storagesystem       =\u003e $storage_system,\n        diskids             =\u003e  $diskIds,\n    }\n\n    #Remove flash Cache drives\n    netapp_e_flash_cache_drives {'removeFlashCacheDrives':\n        ensure              =\u003e absent,\n        cachename           =\u003e 'SSD_1',\n        storagesystem       =\u003e $storage_system,\n        diskids             =\u003e  $diskIds,\n    }\n\n  } else {\n    notice(\"Wait to initialize storage-system: ${storage_system}\")\n  }\n\n  # Dependencies chains\n  if $status == present {\n    Netapp_e_storage_system \u003c| |\u003e -\u003e Netapp_e_storage_pool \u003c| |\u003e -\u003e Netapp_e_volume \u003c| |\u003e -\u003e\n    Netapp_e_volume_copy \u003c| |\u003e -\u003e Netapp_e_snapshot_group \u003c| |\u003e -\u003e Netapp_e_host_group \u003c| |\u003e -\u003e \n    Netapp_e_host \u003c| |\u003e -\u003e Netapp_e_map \u003c| |\u003e -\u003e Netapp_e_mirror_group \u003c| |\u003e -\u003e Netapp_e_mirror_members \u003c| |\u003e -\u003e \n\t  Netapp_e_consistency_group \u003c| |\u003e -\u003e Netapp_e_consistency_members \u003c| |\u003e -\u003e Netapp_e_consistency_multiple_members \u003c| |\u003e -\u003e\n\t  Netapp_e_consistency_group_snapshot \u003c| |\u003e -\u003e Netapp_e_consistency_group_rollback \u003c| |\u003e -\u003e \n    Netapp_e_consistency_group_snapshot_view \u003c| |\u003e-\u003e Netapp_e_flash_cache \u003c||\u003e-\u003e Netapp_e_flash_cache_drives \u003c||\u003e\n  }\n  elsif $status == absent {\n    Netapp_e_flash_cache_drives \u003c||\u003e-\u003e Netapp_e_flash_cache \u003c||\u003e-\u003e\n    Netapp_e_consistency_group_snapshot_view \u003c| |\u003e -\u003e Netapp_e_consistency_group_rollback \u003c| |\u003e -\u003e \n    Netapp_e_consistency_group_snapshot \u003c| |\u003e -\u003e Netapp_e_consistency_multiple_members \u003c| |\u003e -\u003e Netapp_e_consistency_members \u003c| |\u003e -\u003e Netapp_e_consistency_group \u003c| |\u003e -\u003e Netapp_e_mirror_members \u003c| |\u003e -\u003e Netapp_e_mirror_group \u003c| |\u003e -\u003e Netapp_e_map \u003c| |\u003e -\u003e  Netapp_e_host \u003c| |\u003e -\u003e Netapp_e_host_group \u003c| |\u003e -\u003e Netapp_e_snapshot_group \u003c| |\u003e -\u003e Netapp_e_volume_copy \u003c| |\u003e -\u003e\n    Netapp_e_volume \u003c| |\u003e -\u003e Netapp_e_storage_pool \u003c| |\u003e -\u003e Netapp_e_storage_system \u003c| |\u003e \n  }\n  \n}\n```\n## Reference ##\n\nnetapp_e::web_proxy_config\n-----------\nSANtricity Web Services Proxy installation\n\n### Attributes ###\n\n* `ensure` Ensure that netappweb_service will be installed or absent\n* `install_file_name` Name of the installation file inside the folder named files in the module\n* `install_file_location` Location where the installation file will be copied\n* `install_dependent_packages` Enable or disable installation of dependent packages\n\n\nnetapp_e_storage_system\n-----------\nManage Netapp E series storage system creation, modification and deletion.\n\n### Attributes ###\n\n* `name` Storage System ID.\n* `password` Storage system password.\n* `controllers` (array of string) Controllers IP addresses or host names.\n* `meta_tags` (array of hashes) Optional meta tags to associate to this storage system.\n\nnetapp_e_storage_pool\n-----------\nManage Netapp E series storage disk pool\n\n### Attributes ###\n\n* `name` The user-label to assign to the new storage pool.\n* `diskids` Array of the identifiers of the disk drives to use for creating the storage pool.\n* `storagesystem` Storage system ID.\n* `raidlevel` The RAID configuration for the new storage pool. Possible values: 'raidUnsupported', 'raidAll', 'raid0', 'raid1', 'raid3', 'raid5', 'raid6', 'raidDiskPool', '__UNDEFINED'\n* `erasedrives` (boolean, default false) Security-enabled drives that were previously part of a secured storage pool must be erased before they can be re-used. Enable to automatically erase such drives.\n\nnetapp_e_volume\n-----------\nManage Netapp E series volume\n\n### Attributes ###\n\n* `name` The user-label to assign to the new volume.\n* `thin` (boolean, default false) If true thin volume will be created.\n* `storagesystem` Storage system ID.\n* `storagepool` Name of storage poll from which the volume will be allocated.\n* `sizeunit` Unit for size. Possible values: 'bytes', 'b', 'kb', 'mb', 'gb', 'tb', 'pb', 'eb', 'zb', 'yb'\n* `size` Number of units to make the volume.\n* `segsize` (only standard volume) The segment size of the volume.\n* `dataassurance` (boolean) If true data assurance enabled.\n* `defaultmapping` (boolean, thin volume) Create the default volume mapping.\n* `owningcontrollerid` (thin volume) Set the initial owning controller.\n* `repositorysize` (thin volume) Number of units to make the repository volume, which is the backing for the thin volume.\n* `maxrepositorysize` (thin volume) Maximum size to which the thin volume repository can grow. Must be between 4GB \u0026 256GB.\n* `growthalertthreshold` (thin volume) The repository utilization warning threshold (in percent).\n* `expansionpolicy` (thin volume) Thin Volume expansion policy. If automatic, the thin volume will be expanded automatically when capacity is exceeded, if manual, the volume must be expanded manually. Possible values: 'unknown', 'manual', 'automatic', '__UNDEFINED'\n* `cachereadahead` (thin volume) If true automatic cache read-ahead enabled\n\nnetapp_e_snapshot_group\n-----------\nManage Netapp E series snapshot groups\n\n### Attributes ###\n\n* `name`The name of the new snapshot group.\n* `storagesystem` Storage system ID.\n* `storagepool` The name of the storage pool to allocate the repository volume.\n* `volume` Then name of the volume for the new snapshot group\n* `repositorysize` The percent size of the repository in relation to the size of the base volume.\n* `warnthreshold` The repository utilization warning threshold, as a percentage of the repository volume capacity.\n* `limit` The automatic deletion indicator. If non-zero, the oldest snapshot image will be automatically deleted when creating a new snapshot image to keep the total number of snapshot images limited to the number specified.\n* `policy` The behavior on when the data repository becomes full. Possible values: 'unknown', 'failbasewrites', 'purgepit', '__UNDEFINED'\n\nnetapp_e_snapshot_image\n-----------\nManage Netapp E series snapshot image\n\nThis type require `:schedule` meta-parameter to be set.\n\n### Attributes ###\n\n* `name` The name of the puppet resource.\n* `storagesystem` Storage system ID.\n* `group` Name of snapshot group.\n\n```puppet\nschedule { 'everyday':\n  period   =\u003e daily,\n  repeat   =\u003e 1,\n}\n\nnetapp_e_snapshot_image {'daily-snapshot':\n  group         =\u003e 'NewSnapshotGroup',\n  storagesystem =\u003e 'sys_id',\n  schedule      =\u003e 'everyday',\n  require       =\u003e Netapp_e_snapshot_group['NewSnapshotGroup']\n}\n```\n\nnetapp_e_snapshot_volume\n-----------\nManage Netapp E series snapshot volume\n\n### Attributes ###\n\n* `name` The user-label to assign to the new snapshot volume.\n* `imageid` The identifier of the snapshot image used to create the new snapshot volume.\n* `storagesystem` Storage system ID.\n* `storagepool` Name of storage poll from which the volume will be allocated.\n* `fullthreshold` The repository utilization warning threshold percentage.\n* `viewmode` The snapshot volume access mode. Possible values: 'modeUnknown', 'readWrite', 'readOnly', '__UNDEFINED'\n* `repositorysize` The size of the view in relation to the size of the base volume.\n\n```puppet\nnetapp_e_snapshot_volume {'NewSnapshotVol':\n  storagesystem  =\u003e 'sys_id',\n  imageid        =\u003e '34000000600A098000607399006302C054DDC033',\n  storagepool    =\u003e 'raid5pool',\n  viewmode       =\u003e 'readWrite',\n  repositorysize =\u003e 10,\n  fullthreshold  =\u003e 14,\n  require        =\u003e Netapp_e_storage_pool['raid5pool']\n}\n```\n\nnetapp_e_volume_copy\n-----------\nManage Netapp E series volume copy\n\n### Attributes ###\n\n* `name` The user-label to assign to the new volume copy.\n* `storagesystem` Storage system ID.\n* `source` Name of the source volume for the copy job.\n* `target` Name of the target volume for the copy job.\n* `copypriority` The priority of the copy job (0 is the lowest priority, 4 is the highest priority). Possible values: 'priority0', 'priority1', 'priority2', 'priority3', 'priority4', '__UNDEFINED'\n* `targetwriteprotected` (boolean) Specifies whether to block write I/O to the target volume while the copy job exists.\n* `disablesnapshot` (boolean) Will disable the target snapshot after the copy completes and purge the associated group when the copy pair is deleted.\n\nnetapp_e_host\n-----------\nManage Netapp E series hosts\n\n### Attributes ###\n\n* `name` The user-label to assign to the new host.\n* `storagesystem` Storage system ID.\n* `typeindex` HostType index.\n* `groupid` Name of host group where host belongs.\n* `ports` (array of hashes) Host addresses.\n\nnetapp_e_host_group\n-----------\nManage Netapp E series host group\n\n### Attributes ###\n\n* `name` The user-label to assign to the new host.\n* `storagesystem` Storage system ID.\n* `hosts` (array of string) IDs of hosts\n\nnetapp_e_map\n-----------\nManage Netapp E series volume mappings\n\n### Attributes ###\n\n* `name` The user-label to assign to the new volume mapping.\n* `storagesystem` Storage system ID.\n* `source` Name of the source volume.\n* `target` The host group or a host for the volume mapping.\n* `type` Type of target. Possible values: host, hostgroup\n* `lun` The LUN for the volume mapping.\n\nnetapp_e_mirror_group\n-----------\nManage Netapp E series mirror group\n\n### Attributes ###\n\n* `name` The user-label to assign to the new mirror group.\n* `primaryarray` The id of the secondary array.\n* `secondaryarray` The id of the secondary array.\n* `interfacetype` The intended protocol to use if both Fibre and iSCSI are available. Possible values: 'fibre', 'iscsi', 'fibreAndIscsi', 'none'\n* `syncinterval` Sync interval (minutes).\n* `recoverythreshold` Recovery point warning threshold (minutes).\n* `repothreshold` Repository utilization warning threshold.\n* `syncthreshold` Sync warning threshold (minutes).\n\nnetapp_e_mirror_members\n-----------\nManage Netapp E series mirror group members\n\n### Attributes ###\n\n* `name` Puppet resource name.\n* `primaryvolume` Name of primary volume.\n* `secondaryvolume` Name of secondary volume.\n* `mirror` Name of mirror group.\n* `capacity` Percentage of the capacity of the primary volume to use for the repository capacity.\n* `scanmedia` (boolean)\n* `validateparity` (boolean) Validate repository parity.\n\nnetapp_e_network_interface\n-----------\nManage Netapp E series management network configuration\n\n### Attributes ###\n\n* `macaddr` An ASCII string representation of the globally-unique 48-bit MAC address assigned to the Ethernet interface.\n* `storagesystem` Storage system ID.\n* `ipv4` (boolean) True if ipv4 is to be enabled for this interface.\n* `ipv4address` The ipv4 address for the interface. Required for static configuration.\n* `ipv4mask` The ipv4 subnet mask for the interface. Required for static configuration.\n* `ipv4gateway` Manually specify the address of the gateway.\n* `ipv4config` Setting that determines how the ipv4 address is configured. Required if ipv4 is enabled. Possible values: 'configDhcp', 'configStatic', '__UNDEFINED'\n* `ipv6` (boolean) True if ipv6 is to be enabled for this interface.\n* `ipv6address` The ipv6 local address for the interface.\n* `ipv6config` The method by which the ipv6 address information is configured for the interface. Possible values: 'configStatic', 'configStateless', '__UNDEFINED'\n* `ipv6gateway` Manually specify the address of the gateway.\n* `ipv6routableaddr` \n* `remoteaccess` (boolean) If set to true, the controller is enabled for establishment of a remote access session. Depending on the controller platform, the method for remote access could be rlogin or telnet.\n* `speed` The configured speed setting for the Ethernet interface. Possible values: 'speedNone', 'speedAutoNegotiated', 'speed10MbitHalfDuplex', 'speed10MbitFullDuplex', 'speed100MbitHalfDuplex', 'speed100MbitFullDuplex', 'speed1000MbitHalfDuplex', 'speed1000MbitFullDuplex', '__UNDEFINED'\n\n```puppet\nnetapp_e_network_interface {\"00A098607387\":\n  storagesystem =\u003e 'sys_id',\n  ipv4          =\u003e true,\n  ipv4config    =\u003e 'configStatic',\n  ipv4address   =\u003e '10.250.117.117',\n  ipv4gateway   =\u003e '10.250.116.1',\n  ipv4mask      =\u003e '255.255.252.0',\n  remoteaccess  =\u003e true,\n}\n```\n\nnetapp_e_password\n-----------\nManage Netapp E series storage array password\n\n### Attributes ###\n\n* `storagesystem` Storage system ID.\n* `current` Current admin password\n* `new` New password.\n* `admin` (boolean) If this is true, this will set the admin password, if false, it sets the RO password.\n* `force` (boolean) If true it will always try change password, even if already set. We can not check if passwords match.\n\n```puppet\nnetapp_e_password {'sys_id':\n  current =\u003e '',\n  new     =\u003e 'new_password',\n  admin   =\u003e true,\n  force   =\u003e false,\n}\n```\nnetapp_e_consistency_group\n-----------\nManage Netapp E series consistency groups\n\n### Attributes ###\n\n* `consistencygroup` The user-label to assign to the new consistency group.\n* `storagesystem` Group storage system id.\n* `fullwarnthresholdpercent` The full warning threshold percent.\n* `autodeletethreshold` The auto-delete threshold. Automatically delete snapshots after this many..\n* `repositoryfullpolicy` The repository full policy. Possible Values ('purgepit', 'failbasewrites').\n* `rollbackpriority` Roll-back priority. Possible Values ('highest', 'high', 'medium', 'low', 'lowest')\n\nnetapp_e_consistency_members\n-----------\nManage Netapp E series consistency group members\n\n### Attributes ###\n\n* `volume` Member Volume name.\n* `storagesystem` Group storage system id.\n* `consistencygroup` Consistency Group Name.\n* `repositorypool` The repository volume pool.\n* `scanmedia` (boolean)\n* `validateparity` (boolean) Validate repository parity.\n* `repositorypercent` Repository Percent\n* `retainrepositories` (boolean) Delete all repositories assosiated with the member volume. (Use when want to remove member volume)\n\nnetapp_e_consistency_multiple_members\n-----------\nManage Netapp E series consistency group members\n\n### Attributes ###\n\n* `name` The user-label to assign for volume batch insert.\n* `storagesystem` Group storage system id.\n* `consistencygroup` Consistency Group Name.\n* `volumes` (array of hashes) Volumes details.\n\n### Attributes for volumes ###\n\n* `volume` Member Volume name.\n* `repositorypool` The repository volume pool.\n* `scanmedia` (boolean)\n* `validateparity` (boolean) Validate repository parity.\n* `repositorypercent` Repository Percent\n\nnetapp_e_consistency_group_snapshot\n-----------\nManage Netapp E series consistency group snapshots\n\n### Attributes ###\n\n* `consistencygroup` The user-label to assign to the new consistency group.\n* `storagesystem` Group storage system id.\n\n\nnetapp_e_consistency_group_rollback\n-----------\nManage Netapp E series consistency group rollbacks\n\n### Attributes ###\n\n* `snapshotnumber` The sequence number of snapshot to which the Consistency Group needs to be roll backed.\n* `storagesystem` Group storage system id.\n* `consistencygroup` Consistency Group Name.\n\nnetapp_e_consistency_group_snapshot_view\n-----------\nManage Netapp E series consistency group snapshot views\n\n### Attributes ###\n\n* `viewname` The user-label to assign for volume batch insert.\n* `storagesystem` Group storage system id.\n* `consistencygroup` Consistency Group Name.\n* `snapshotnumber` The sequence number of snapshot to which the Consistency Group needs to be roll backed.\n* `viewtype` Value 'byVolume' ensures that the view should be created only for the mentioned volume from the consistency group snapshot. Value 'bySnapshot' ensures that views for all the volumes in consistency group snapshot are created\n* `volume` Name of the volume from snapshot whose view needs to be created\n* `scanmedia` (boolean)\n* `validateparity` (boolean) Validate repository parity.\n* `repositorypercent` The repository utilization warning threshold percentage.\n* `accessmode` The view access mode. Possible values: 'readWrite', 'readOnly'\n* `repositorypool` The name of the Storage Pool in which the view should be created.\n\n\nnetapp_e_firmware_file\n-----------\nManage Netapp E series firmware cwf file for upload and delete on server\n\n### Attributes ###\n\n* `filename` Name of NVSRAM or Controller Firmware file (cwfFile/nvsramFile) name.\n* `folderlocation` Folder Location of NVSRAM or Controller Firmware file from where it is to be uploaded.\n* `validate_file` Check if the Firmware file is valid or not.\n\n\nnetapp_e_firmware_upgrade\n------------\nManage Netapp E series firmware upgrade operation\n\n### Attributes ###\n\n* `filename` Name of NVSRAM or Controller Firmware file name.\n* `firmwaretype` Possible values('cfwfile','nvsramfile'). 'cfwfile' will upgrade Controller firmware. 'nvsramfile' will upgrade NVSRAM firmware.\n* `storagesystem` Group storage system id.\n* `melcheck` If it is true and any issues found in mel check, firmware would not be upgraded. If it is false, the issues will be ignored and firmware will be upgraded.\n* `compatibilitycheck` True will check the compatibility of uploaded firmware version with the storage array. False will not perform the check. Firmware will not be upgraded if check is enabled and compatibility fails.\n* `releasedbuildonly` Only consider released firmware builds as valid Controller Firmware files for checking the compatibility.\n* `waitforcompletion` true will wait for upgrade process to complete successfully. false will request to start the upgrade process and would not monitor success.\n* `ensure` Possible values('upgraded','staged','activated')\n\n\nnetapp_e_web_proxy_upgrade\n-----------\nManage Netapp E series SANtricity Web Services Proxy upgrade operation\n\n### Attributes ###\n\n* `name` Name of netapp_e_web_proxy_upgrade manifest block\n* `ensure` Possible values('upgraded','staged','activated')\n* `force` String value.\n\nnetapp_e_flash_cache\n-----------\nManage Netapp E series SANtricity Web Services Flash Cache operation\n\n### Attributes ###\n\n* `name` Name of netapp_e_flash_cache manifest block.\n* `cachename` Name of flash cache.\n* `storagesystem` Storage system ID.\n* `ensure` Possible values('created','suspended','resumed','updated','deleted').\n* `diskids` Array of disk drive ids.\n* `enableexistingvolumes` To enable existing volumes or not. Possible values('true','false').\n* `newname` New name of flash cache.\n* `configtype` Config type of flash cache. Possible values('database','multimedia','filesystem').\n* `ignorestate` Possible values('true','false')\n\nnetapp_e_flash_cache_drives\n-----------\nManage Netapp E series SANtricity Web Services Flash Cache Drives operation\n\n### Attributes ###\n\n* `name` Name of netapp_e_flash_cache manifest block.\n* `cachename` Name of flash cache.\n* `storagesystem` Storage system ID.\n* `ensure` Possible values('present','absent').\n* `diskids` Array of disk drive ids.\n\n\n## Limitations ##\n\nThis module is tested against both [Open Source Puppet][] and [Puppet Enterprise][] on:\n\n- CentOS 7\n- Windows\n- RedHat\n\nThis module also provides functions for other distributions and operating systems, such as Debian, SUSE, and Solaris, but is not formally tested on them and are subject to regressions.\n\n- NetApp SANtricity Web Services Proxy version 1.3 supported.\n\n\n## Contributing ##\n\nBefore creating pull request, run the tests and ensure that all Rspec pass.\nYou can also check acceptance test which can be found in [acceptancetests directory](acceptancetests/README.md)\n\n\n## Authors \u0026 Contributors ##\n\n* Janet Blagg \u003cJanet.Blagg@netapp.com\u003e\n* Matt Tangvald \u003cMatt.Tangvald@netapp.com\u003e\n* Frank Poole \u003cFrank.Poole@netapp.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetapp%2Fpuppet-eseries","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetapp%2Fpuppet-eseries","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetapp%2Fpuppet-eseries/lists"}