ansible-playbook [core 2.12.6]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /tmp/tmp1dlaws1u
  executable location = /usr/bin/ansible-playbook
  python version = 3.9.13 (main, May 18 2022, 00:00:00) [GCC 11.3.1 20220421 (Red Hat 11.3.1-2)]
  jinja version = 2.11.3
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
Skipping callback 'debug', as we already have a stdout callback.
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: rhel-7_setup.yml *****************************************************
1 plays in /cache/rhel-7_setup.yml

PLAY [Setup repos] *************************************************************
META: ran handlers

TASK [set up internal repositories] ********************************************
task path: /cache/rhel-7_setup.yml:5
Wednesday 03 August 2022  07:54:33 +0000 (0:00:00.018)       0:00:00.018 ****** 
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
META: ran handlers
META: ran handlers

PLAY RECAP *********************************************************************
/cache/rhel-7.qcow2        : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Wednesday 03 August 2022  07:54:35 +0000 (0:00:01.352)       0:00:01.370 ****** 
=============================================================================== 
set up internal repositories -------------------------------------------- 1.35s
/cache/rhel-7_setup.yml:5 -----------------------------------------------------

PLAYBOOK: tests_certificate_runafter.yml ***************************************
1 plays in /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml

PLAY [test certificate issuance with run_after shell script] *******************

TASK [Gathering Facts] *********************************************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:5
Wednesday 03 August 2022  07:54:35 +0000 (0:00:00.034)       0:00:01.405 ****** 
ok: [/cache/rhel-7.qcow2]
META: ran handlers

TASK [Download current linux-system-roles.certificate] *************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:8
Wednesday 03 August 2022  07:54:36 +0000 (0:00:00.915)       0:00:02.320 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [Install cockpit] *********************************************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:21
Wednesday 03 August 2022  07:54:36 +0000 (0:00:00.037)       0:00:02.358 ****** 

TASK [linux-system-roles.cockpit : Ensure ansible_facts and variables used by role] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:1
Wednesday 03 August 2022  07:54:36 +0000 (0:00:00.038)       0:00:02.397 ****** 
included: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/set_vars.yml for /cache/rhel-7.qcow2

TASK [linux-system-roles.cockpit : Ensure ansible_facts used by role] **********
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/set_vars.yml:2
Wednesday 03 August 2022  07:54:36 +0000 (0:00:00.026)       0:00:02.423 ****** 
ok: [/cache/rhel-7.qcow2]

TASK [linux-system-roles.cockpit : Set version specific variables] *************
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/set_vars.yml:8
Wednesday 03 August 2022  07:54:36 +0000 (0:00:00.433)       0:00:02.856 ****** 
ok: [/cache/rhel-7.qcow2] => (item=/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/vars/RedHat-7.yml) => {
    "ansible_facts": {
        "__cockpit_packages": {
            "default": "{{ __cockpit_packages_minimal + __cockpit_packages_default }}",
            "full": "{{ __cockpit_packages_minimal + __cockpit_packages_default + __cockpit_packages_full }}",
            "minimal": "{{ __cockpit_packages_minimal }}"
        },
        "__cockpit_packages_default": [
            "cockpit",
            "cockpit-networkmanager",
            "cockpit-packagekit",
            "cockpit-selinux",
            "cockpit-storaged"
        ],
        "__cockpit_packages_exclude": [
            "cockpit-machines-ovirt",
            "cockpit-tests"
        ],
        "__cockpit_packages_full": [
            "cockpit-composer",
            "cockpit-dashboard",
            "cockpit-doc",
            "cockpit-docker",
            "cockpit-leapp",
            "cockpit-machines",
            "cockpit-pcp",
            "cockpit-shell"
        ],
        "__cockpit_packages_minimal": [
            "cockpit-system",
            "cockpit-ws"
        ]
    },
    "ansible_included_var_files": [
        "/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/vars/RedHat-7.yml"
    ],
    "ansible_loop_var": "item",
    "changed": false,
    "item": "/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/vars/RedHat-7.yml"
}

TASK [linux-system-roles.cockpit : List active RHEL repositories] **************
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:9
Wednesday 03 August 2022  07:54:36 +0000 (0:00:00.038)       0:00:02.894 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "yum",
        "repolist"
    ],
    "delta": "0:00:00.183166",
    "end": "2022-08-03 03:54:36.978781",
    "rc": 0,
    "start": "2022-08-03 03:54:36.795615"
}

STDOUT:

Loaded plugins: search-disabled-repos
repo id                              repo name                            status
rhel                                 rhel                                 5,231
rhel-7-server-extras-rpms            rhel-7-server-extras-rpms            1,431
rhel-ha-for-rhel-7-server-rpms       rhel-ha-for-rhel-7-server-rpms          52
rhel-optional                        rhel-optional                        4,688
repolist: 11,402

TASK [linux-system-roles.cockpit : Enable RHEL repositories] *******************
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:17
Wednesday 03 August 2022  07:54:37 +0000 (0:00:00.604)       0:00:03.499 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.cockpit : Manage cockpit packages using platform specific package manager if applicable] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:21
Wednesday 03 August 2022  07:54:37 +0000 (0:00:00.023)       0:00:03.523 ****** 
included: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/setup-yum.yml for /cache/rhel-7.qcow2 => (item=/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/setup-yum.yml)

TASK [linux-system-roles.cockpit : If choosing custom package set, ensure minimal cockpit is included] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/setup-yum.yml:1
Wednesday 03 August 2022  07:54:37 +0000 (0:00:00.036)       0:00:03.559 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "ansible_facts": {
        "cockpit_packages": "minimal"
    },
    "changed": false
}

TASK [linux-system-roles.cockpit : Ensure Cockpit Web Console packages are installed.] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/setup-yum.yml:8
Wednesday 03 August 2022  07:54:37 +0000 (0:00:00.035)       0:00:03.595 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "rc": 0,
    "results": [
        "cockpit-system-195.10-1.el7.noarch providing cockpit-system is already installed",
        "cockpit-ws-195.10-1.el7.x86_64 providing cockpit-ws is already installed"
    ]
}

TASK [linux-system-roles.cockpit : Create custom port configuration file directory] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:27
Wednesday 03 August 2022  07:54:38 +0000 (0:00:00.638)       0:00:04.233 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.cockpit : Create custom port configuration file] ******
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:35
Wednesday 03 August 2022  07:54:38 +0000 (0:00:00.023)       0:00:04.256 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.cockpit : Check if SELinux is enabled] ****************
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:51
Wednesday 03 August 2022  07:54:38 +0000 (0:00:00.021)       0:00:04.278 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [Allow cockpit to own custom port in SELinux policy] **********************
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:58
Wednesday 03 August 2022  07:54:38 +0000 (0:00:00.024)       0:00:04.302 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.cockpit : Clean up port configuration file for undefined custom port] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:66
Wednesday 03 August 2022  07:54:38 +0000 (0:00:00.024)       0:00:04.326 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "path": "/etc/systemd/system/cockpit.socket.d/listen.conf",
    "state": "absent"
}

TASK [linux-system-roles.cockpit : Ensure Cockpit Web Console is started/stopped and enabled/disabled] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:75
Wednesday 03 August 2022  07:54:38 +0000 (0:00:00.470)       0:00:04.797 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "enabled": true,
    "name": "cockpit.socket",
    "state": "started",
    "status": {
        "Accept": "no",
        "ActiveEnterTimestamp": "Wed 2022-08-03 03:54:30 EDT",
        "ActiveEnterTimestampMonotonic": "37441049",
        "ActiveExitTimestampMonotonic": "0",
        "ActiveState": "active",
        "After": "sysinit.target system.slice systemd-journald.socket",
        "AllowIsolate": "no",
        "AmbientCapabilities": "0",
        "AssertResult": "yes",
        "AssertTimestamp": "Wed 2022-08-03 03:54:30 EDT",
        "AssertTimestampMonotonic": "37424769",
        "Backlog": "128",
        "Before": "sockets.target shutdown.target cockpit-motd.service cockpit.service",
        "BindIPv6Only": "default",
        "BlockIOAccounting": "no",
        "BlockIOWeight": "18446744073709551615",
        "Broadcast": "no",
        "CPUAccounting": "no",
        "CPUQuotaPerSecUSec": "infinity",
        "CPUSchedulingPolicy": "0",
        "CPUSchedulingPriority": "0",
        "CPUSchedulingResetOnFork": "no",
        "CPUShares": "18446744073709551615",
        "CanIsolate": "no",
        "CanReload": "no",
        "CanStart": "yes",
        "CanStop": "yes",
        "CapabilityBoundingSet": "18446744073709551615",
        "CollectMode": "inactive",
        "ConditionResult": "yes",
        "ConditionTimestamp": "Wed 2022-08-03 03:54:30 EDT",
        "ConditionTimestampMonotonic": "37424768",
        "Conflicts": "shutdown.target",
        "ControlGroup": "/system.slice/cockpit.socket",
        "ControlPID": "0",
        "DefaultDependencies": "yes",
        "DeferAcceptUSec": "0",
        "Delegate": "no",
        "Description": "Cockpit Web Service Socket",
        "DevicePolicy": "auto",
        "DirectoryMode": "0755",
        "Documentation": "man:cockpit-ws(8)",
        "ExecStartPost": "{ path=/bin/ln ; argv[]=/bin/ln -snf active.motd /run/cockpit/motd ; ignore_errors=yes ; start_time=[Wed 2022-08-03 03:54:30 EDT] ; stop_time=[Wed 2022-08-03 03:54:30 EDT] ; pid=9658 ; code=exited ; status=1 }",
        "ExecStopPost": "{ path=/bin/ln ; argv[]=/bin/ln -snf /usr/share/cockpit/motd/inactive.motd /run/cockpit/motd ; ignore_errors=yes ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
        "FragmentPath": "/usr/lib/systemd/system/cockpit.socket",
        "FreeBind": "no",
        "IOScheduling": "0",
        "IPTOS": "-1",
        "IPTTL": "-1",
        "Id": "cockpit.socket",
        "IgnoreOnIsolate": "no",
        "IgnoreOnSnapshot": "no",
        "IgnoreSIGPIPE": "yes",
        "InactiveEnterTimestampMonotonic": "0",
        "InactiveExitTimestamp": "Wed 2022-08-03 03:54:30 EDT",
        "InactiveExitTimestampMonotonic": "37426670",
        "JobTimeoutAction": "none",
        "JobTimeoutUSec": "0",
        "KeepAlive": "no",
        "KeepAliveIntervalUSec": "0",
        "KeepAliveProbes": "0",
        "KeepAliveTimeUSec": "0",
        "KillMode": "control-group",
        "KillSignal": "15",
        "LimitAS": "18446744073709551615",
        "LimitCORE": "18446744073709551615",
        "LimitCPU": "18446744073709551615",
        "LimitDATA": "18446744073709551615",
        "LimitFSIZE": "18446744073709551615",
        "LimitLOCKS": "18446744073709551615",
        "LimitMEMLOCK": "65536",
        "LimitMSGQUEUE": "819200",
        "LimitNICE": "0",
        "LimitNOFILE": "4096",
        "LimitNPROC": "7150",
        "LimitRSS": "18446744073709551615",
        "LimitRTPRIO": "0",
        "LimitRTTIME": "18446744073709551615",
        "LimitSIGPENDING": "7150",
        "LimitSTACK": "18446744073709551615",
        "ListenStream": "[::]:9090",
        "LoadState": "loaded",
        "Mark": "-1",
        "MaxConnections": "64",
        "MemoryAccounting": "no",
        "MemoryCurrent": "18446744073709551615",
        "MemoryLimit": "18446744073709551615",
        "MountFlags": "0",
        "NAccepted": "0",
        "NConnections": "0",
        "Names": "cockpit.socket",
        "NeedDaemonReload": "no",
        "Nice": "0",
        "NoDelay": "no",
        "NoNewPrivileges": "no",
        "NonBlocking": "no",
        "OOMScoreAdjust": "0",
        "OnFailureJobMode": "replace",
        "PassCredentials": "no",
        "PassSecurity": "no",
        "PipeSize": "0",
        "Priority": "-1",
        "PrivateDevices": "no",
        "PrivateNetwork": "no",
        "PrivateTmp": "no",
        "ProtectHome": "no",
        "ProtectSystem": "no",
        "ReceiveBuffer": "0",
        "RefuseManualStart": "no",
        "RefuseManualStop": "no",
        "RemoveOnStop": "no",
        "RequiredBy": "cockpit.service",
        "Requires": "system.slice sysinit.target",
        "Result": "success",
        "ReusePort": "no",
        "RuntimeDirectoryMode": "0755",
        "SameProcessGroup": "no",
        "SecureBits": "0",
        "SendBuffer": "0",
        "SendSIGHUP": "no",
        "SendSIGKILL": "yes",
        "Slice": "system.slice",
        "SocketMode": "0666",
        "StandardError": "inherit",
        "StandardInput": "null",
        "StandardOutput": "journal",
        "StartupBlockIOWeight": "18446744073709551615",
        "StartupCPUShares": "18446744073709551615",
        "StopWhenUnneeded": "no",
        "SubState": "listening",
        "SyslogLevelPrefix": "yes",
        "SyslogPriority": "30",
        "SystemCallErrorNumber": "0",
        "TTYReset": "no",
        "TTYVHangup": "no",
        "TTYVTDisallocate": "no",
        "TasksAccounting": "no",
        "TasksCurrent": "18446744073709551615",
        "TasksMax": "18446744073709551615",
        "TimeoutUSec": "1min 30s",
        "TimerSlackNSec": "50000",
        "Transient": "no",
        "Transparent": "no",
        "Triggers": "cockpit.service",
        "UMask": "0022",
        "UnitFilePreset": "disabled",
        "UnitFileState": "enabled",
        "WantedBy": "sockets.target",
        "Wants": "cockpit-motd.service"
    }
}

TASK [linux-system-roles.cockpit : Create cockpit.conf configuration file] *****
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:81
Wednesday 03 August 2022  07:54:39 +0000 (0:00:00.665)       0:00:05.462 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.cockpit : Link to configured existing certificate] ****
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:92
Wednesday 03 August 2022  07:54:39 +0000 (0:00:00.024)       0:00:05.486 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.cockpit : Link to configured existing certificate key] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:102
Wednesday 03 August 2022  07:54:39 +0000 (0:00:00.025)       0:00:05.512 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}
META: role_complete for /cache/rhel-7.qcow2

TASK [Allow certmonger to write into Cockpit's certificate directory] **********
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:31
Wednesday 03 August 2022  07:54:39 +0000 (0:00:00.034)       0:00:05.547 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0755",
    "owner": "root",
    "path": "/etc/cockpit/ws-certs.d/",
    "secontext": "system_u:object_r:cert_t:s0",
    "size": 58,
    "state": "directory",
    "uid": 0
}

TASK [Generate certificate with linux-system-roles.certificate] ****************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:38
Wednesday 03 August 2022  07:54:39 +0000 (0:00:00.321)       0:00:05.868 ****** 

TASK [linux-system-roles.certificate : Set version specific variables] *********
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:2
Wednesday 03 August 2022  07:54:39 +0000 (0:00:00.044)       0:00:05.912 ****** 
included: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/set_vars.yml for /cache/rhel-7.qcow2

TASK [linux-system-roles.certificate : Ensure ansible_facts used by role] ******
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/set_vars.yml:2
Wednesday 03 August 2022  07:54:39 +0000 (0:00:00.027)       0:00:05.940 ****** 
ok: [/cache/rhel-7.qcow2]

TASK [linux-system-roles.certificate : Set platform/version specific variables] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/set_vars.yml:8
Wednesday 03 August 2022  07:54:40 +0000 (0:00:00.441)       0:00:06.381 ****** 
skipping: [/cache/rhel-7.qcow2] => (item=RedHat.yml)  => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat.yml",
    "skip_reason": "Conditional result was False"
}
skipping: [/cache/rhel-7.qcow2] => (item=RedHat.yml)  => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat.yml",
    "skip_reason": "Conditional result was False"
}
ok: [/cache/rhel-7.qcow2] => (item=RedHat_7.yml) => {
    "ansible_facts": {
        "__certificate_default_directory": "/etc/pki/tls",
        "__certificate_packages": [
            "python-pyasn1",
            "python-cryptography",
            "python-dbus"
        ]
    },
    "ansible_included_var_files": [
        "/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/vars/RedHat_7.yml"
    ],
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat_7.yml"
}
skipping: [/cache/rhel-7.qcow2] => (item=RedHat_7.9.yml)  => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat_7.9.yml",
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.certificate : Ensure certificate role dependencies are installed] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:5
Wednesday 03 August 2022  07:54:40 +0000 (0:00:00.053)       0:00:06.434 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "changes": {
        "installed": [
            "python-pyasn1",
            "python-cryptography"
        ]
    },
    "rc": 0,
    "results": [
        "dbus-python-1.1.1-9.el7.x86_64 providing python-dbus is already installed",
        "Loaded plugins: search-disabled-repos\nResolving Dependencies\n--> Running transaction check\n---> Package python2-cryptography.x86_64 0:1.7.2-2.el7 will be installed\n--> Processing Dependency: python-idna >= 2.0 for package: python2-cryptography-1.7.2-2.el7.x86_64\n--> Processing Dependency: python-cffi >= 1.4.1 for package: python2-cryptography-1.7.2-2.el7.x86_64\n--> Processing Dependency: python-enum34 for package: python2-cryptography-1.7.2-2.el7.x86_64\n---> Package python2-pyasn1.noarch 0:0.1.9-7.el7 will be installed\n--> Running transaction check\n---> Package python-cffi.x86_64 0:1.6.0-5.el7 will be installed\n--> Processing Dependency: python-pycparser for package: python-cffi-1.6.0-5.el7.x86_64\n---> Package python-enum34.noarch 0:1.0.4-1.el7 will be installed\n---> Package python-idna.noarch 0:2.4-1.el7 will be installed\n--> Running transaction check\n---> Package python-pycparser.noarch 0:2.14-1.el7 will be installed\n--> Processing Dependency: python-ply for package: python-pycparser-2.14-1.el7.noarch\n--> Running transaction check\n---> Package python-ply.noarch 0:3.4-11.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package                     Arch          Version            Repository   Size\n================================================================================\nInstalling:\n python2-cryptography        x86_64        1.7.2-2.el7        rhel        503 k\n python2-pyasn1              noarch        0.1.9-7.el7        rhel        100 k\nInstalling for dependencies:\n python-cffi                 x86_64        1.6.0-5.el7        rhel        218 k\n python-enum34               noarch        1.0.4-1.el7        rhel         52 k\n python-idna                 noarch        2.4-1.el7          rhel         94 k\n python-ply                  noarch        3.4-11.el7         rhel        123 k\n python-pycparser            noarch        2.14-1.el7         rhel        105 k\n\nTransaction Summary\n================================================================================\nInstall  2 Packages (+5 Dependent packages)\n\nTotal download size: 1.2 M\nInstalled size: 6.1 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                               12 MB/s | 1.2 MB  00:00     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : python2-pyasn1-0.1.9-7.el7.noarch                            1/7 \n  Installing : python-enum34-1.0.4-1.el7.noarch                             2/7 \n  Installing : python-ply-3.4-11.el7.noarch                                 3/7 \n  Installing : python-pycparser-2.14-1.el7.noarch                           4/7 \n  Installing : python-cffi-1.6.0-5.el7.x86_64                               5/7 \n  Installing : python-idna-2.4-1.el7.noarch                                 6/7 \n  Installing : python2-cryptography-1.7.2-2.el7.x86_64                      7/7 \n  Verifying  : python-idna-2.4-1.el7.noarch                                 1/7 \n  Verifying  : python-pycparser-2.14-1.el7.noarch                           2/7 \n  Verifying  : python-ply-3.4-11.el7.noarch                                 3/7 \n  Verifying  : python-cffi-1.6.0-5.el7.x86_64                               4/7 \n  Verifying  : python-enum34-1.0.4-1.el7.noarch                             5/7 \n  Verifying  : python2-pyasn1-0.1.9-7.el7.noarch                            6/7 \n  Verifying  : python2-cryptography-1.7.2-2.el7.x86_64                      7/7 \n\nInstalled:\n  python2-cryptography.x86_64 0:1.7.2-2.el7 python2-pyasn1.noarch 0:0.1.9-7.el7\n\nDependency Installed:\n  python-cffi.x86_64 0:1.6.0-5.el7        python-enum34.noarch 0:1.0.4-1.el7   \n  python-idna.noarch 0:2.4-1.el7          python-ply.noarch 0:3.4-11.el7       \n  python-pycparser.noarch 0:2.14-1.el7   \n\nComplete!\n"
    ]
}

TASK [linux-system-roles.certificate : Ensure provider packages are installed] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:22
Wednesday 03 August 2022  07:54:42 +0000 (0:00:02.296)       0:00:08.731 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "changes": {
        "installed": [
            "certmonger"
        ]
    },
    "rc": 0,
    "results": [
        "Loaded plugins: search-disabled-repos\nResolving Dependencies\n--> Running transaction check\n---> Package certmonger.x86_64 0:0.78.4-17.el7_9 will be installed\n--> Processing Dependency: psmisc for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtevent.so.0(TEVENT_0.9.9)(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtalloc.so.2(TALLOC_2.0.2)(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libxmlrpc_util.so.3()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libxmlrpc_client.so.3()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libxmlrpc.so.3()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtevent.so.0()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtalloc.so.2()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Running transaction check\n---> Package libtalloc.x86_64 0:2.1.16-1.el7 will be installed\n---> Package libtevent.x86_64 0:0.9.39-1.el7 will be installed\n---> Package psmisc.x86_64 0:22.20-17.el7 will be installed\n---> Package xmlrpc-c.x86_64 0:1.32.5-1905.svn2451.el7 will be installed\n---> Package xmlrpc-c-client.x86_64 0:1.32.5-1905.svn2451.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package              Arch        Version                       Repository\n                                                                           Size\n================================================================================\nInstalling:\n certmonger           x86_64      0.78.4-17.el7_9               rhel      608 k\nInstalling for dependencies:\n libtalloc            x86_64      2.1.16-1.el7                  rhel       33 k\n libtevent            x86_64      0.9.39-1.el7                  rhel       41 k\n psmisc               x86_64      22.20-17.el7                  rhel      141 k\n xmlrpc-c             x86_64      1.32.5-1905.svn2451.el7       rhel      130 k\n xmlrpc-c-client      x86_64      1.32.5-1905.svn2451.el7       rhel       32 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package (+5 Dependent packages)\n\nTotal download size: 984 k\nInstalled size: 3.7 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                               12 MB/s | 984 kB  00:00     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : xmlrpc-c-1.32.5-1905.svn2451.el7.x86_64                      1/6 \n  Installing : libtalloc-2.1.16-1.el7.x86_64                                2/6 \n  Installing : libtevent-0.9.39-1.el7.x86_64                                3/6 \n  Installing : xmlrpc-c-client-1.32.5-1905.svn2451.el7.x86_64               4/6 \n  Installing : psmisc-22.20-17.el7.x86_64                                   5/6 \n  Installing : certmonger-0.78.4-17.el7_9.x86_64                            6/6 \n  Verifying  : xmlrpc-c-client-1.32.5-1905.svn2451.el7.x86_64               1/6 \n  Verifying  : libtevent-0.9.39-1.el7.x86_64                                2/6 \n  Verifying  : libtalloc-2.1.16-1.el7.x86_64                                3/6 \n  Verifying  : xmlrpc-c-1.32.5-1905.svn2451.el7.x86_64                      4/6 \n  Verifying  : certmonger-0.78.4-17.el7_9.x86_64                            5/6 \n  Verifying  : psmisc-22.20-17.el7.x86_64                                   6/6 \n\nInstalled:\n  certmonger.x86_64 0:0.78.4-17.el7_9                                           \n\nDependency Installed:\n  libtalloc.x86_64 0:2.1.16-1.el7                                               \n  libtevent.x86_64 0:0.9.39-1.el7                                               \n  psmisc.x86_64 0:22.20-17.el7                                                  \n  xmlrpc-c.x86_64 0:1.32.5-1905.svn2451.el7                                     \n  xmlrpc-c-client.x86_64 0:1.32.5-1905.svn2451.el7                              \n\nComplete!\n"
    ]
}

TASK [linux-system-roles.certificate : Ensure pre-scripts hooks directory exists] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:33
Wednesday 03 August 2022  07:54:44 +0000 (0:00:02.066)       0:00:10.797 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0700",
    "owner": "root",
    "path": "/etc/certmonger//pre-scripts",
    "secontext": "unconfined_u:object_r:etc_t:s0",
    "size": 6,
    "state": "directory",
    "uid": 0
}

TASK [linux-system-roles.certificate : Ensure post-scripts hooks directory exists] ***
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:59
Wednesday 03 August 2022  07:54:45 +0000 (0:00:00.377)       0:00:11.175 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0700",
    "owner": "root",
    "path": "/etc/certmonger//post-scripts",
    "secontext": "unconfined_u:object_r:etc_t:s0",
    "size": 6,
    "state": "directory",
    "uid": 0
}

TASK [linux-system-roles.certificate : Ensure provider service is running] *****
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:88
Wednesday 03 August 2022  07:54:45 +0000 (0:00:00.330)       0:00:11.505 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "enabled": true,
    "name": "certmonger",
    "state": "started",
    "status": {
        "ActiveEnterTimestampMonotonic": "0",
        "ActiveExitTimestampMonotonic": "0",
        "ActiveState": "inactive",
        "After": "dbus.service systemd-journald.socket system.slice network.target basic.target syslog.target",
        "AllowIsolate": "no",
        "AmbientCapabilities": "0",
        "AssertResult": "no",
        "AssertTimestampMonotonic": "0",
        "Before": "shutdown.target",
        "BlockIOAccounting": "no",
        "BlockIOWeight": "18446744073709551615",
        "BusName": "org.fedorahosted.certmonger",
        "CPUAccounting": "no",
        "CPUQuotaPerSecUSec": "infinity",
        "CPUSchedulingPolicy": "0",
        "CPUSchedulingPriority": "0",
        "CPUSchedulingResetOnFork": "no",
        "CPUShares": "18446744073709551615",
        "CanIsolate": "no",
        "CanReload": "no",
        "CanStart": "yes",
        "CanStop": "yes",
        "CapabilityBoundingSet": "18446744073709551615",
        "CollectMode": "inactive",
        "ConditionResult": "no",
        "ConditionTimestampMonotonic": "0",
        "Conflicts": "shutdown.target",
        "ControlPID": "0",
        "DefaultDependencies": "yes",
        "Delegate": "no",
        "Description": "Certificate monitoring and PKI enrollment",
        "DevicePolicy": "auto",
        "EnvironmentFile": "/etc/sysconfig/certmonger (ignore_errors=yes)",
        "ExecMainCode": "0",
        "ExecMainExitTimestampMonotonic": "0",
        "ExecMainPID": "0",
        "ExecMainStartTimestampMonotonic": "0",
        "ExecMainStatus": "0",
        "ExecStart": "{ path=/usr/sbin/certmonger ; argv[]=/usr/sbin/certmonger -S -p /var/run/certmonger.pid -n $OPTS ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
        "FailureAction": "none",
        "FileDescriptorStoreMax": "0",
        "FragmentPath": "/usr/lib/systemd/system/certmonger.service",
        "GuessMainPID": "yes",
        "IOScheduling": "0",
        "Id": "certmonger.service",
        "IgnoreOnIsolate": "no",
        "IgnoreOnSnapshot": "no",
        "IgnoreSIGPIPE": "yes",
        "InactiveEnterTimestampMonotonic": "0",
        "InactiveExitTimestampMonotonic": "0",
        "JobTimeoutAction": "none",
        "JobTimeoutUSec": "0",
        "KillMode": "control-group",
        "KillSignal": "15",
        "LimitAS": "18446744073709551615",
        "LimitCORE": "18446744073709551615",
        "LimitCPU": "18446744073709551615",
        "LimitDATA": "18446744073709551615",
        "LimitFSIZE": "18446744073709551615",
        "LimitLOCKS": "18446744073709551615",
        "LimitMEMLOCK": "65536",
        "LimitMSGQUEUE": "819200",
        "LimitNICE": "0",
        "LimitNOFILE": "4096",
        "LimitNPROC": "7150",
        "LimitRSS": "18446744073709551615",
        "LimitRTPRIO": "0",
        "LimitRTTIME": "18446744073709551615",
        "LimitSIGPENDING": "7150",
        "LimitSTACK": "18446744073709551615",
        "LoadState": "loaded",
        "MainPID": "0",
        "MemoryAccounting": "no",
        "MemoryCurrent": "18446744073709551615",
        "MemoryLimit": "18446744073709551615",
        "MountFlags": "0",
        "Names": "certmonger.service",
        "NeedDaemonReload": "no",
        "Nice": "0",
        "NoNewPrivileges": "no",
        "NonBlocking": "no",
        "NotifyAccess": "none",
        "OOMScoreAdjust": "0",
        "OnFailureJobMode": "replace",
        "PIDFile": "/var/run/certmonger.pid",
        "PermissionsStartOnly": "no",
        "PrivateDevices": "no",
        "PrivateNetwork": "no",
        "PrivateTmp": "no",
        "ProtectHome": "no",
        "ProtectSystem": "no",
        "RefuseManualStart": "no",
        "RefuseManualStop": "no",
        "RemainAfterExit": "no",
        "Requires": "basic.target system.slice",
        "Restart": "no",
        "RestartUSec": "100ms",
        "Result": "success",
        "RootDirectoryStartOnly": "no",
        "RuntimeDirectoryMode": "0755",
        "SameProcessGroup": "no",
        "SecureBits": "0",
        "SendSIGHUP": "no",
        "SendSIGKILL": "yes",
        "Slice": "system.slice",
        "StandardError": "inherit",
        "StandardInput": "null",
        "StandardOutput": "journal",
        "StartLimitAction": "none",
        "StartLimitBurst": "5",
        "StartLimitInterval": "10000000",
        "StartupBlockIOWeight": "18446744073709551615",
        "StartupCPUShares": "18446744073709551615",
        "StatusErrno": "0",
        "StopWhenUnneeded": "no",
        "SubState": "dead",
        "SyslogLevelPrefix": "yes",
        "SyslogPriority": "30",
        "SystemCallErrorNumber": "0",
        "TTYReset": "no",
        "TTYVHangup": "no",
        "TTYVTDisallocate": "no",
        "TasksAccounting": "no",
        "TasksCurrent": "18446744073709551615",
        "TasksMax": "18446744073709551615",
        "TimeoutStartUSec": "1min 30s",
        "TimeoutStopUSec": "1min 30s",
        "TimerSlackNSec": "50000",
        "Transient": "no",
        "Type": "dbus",
        "UMask": "0022",
        "UnitFilePreset": "disabled",
        "UnitFileState": "disabled",
        "WatchdogTimestampMonotonic": "0",
        "WatchdogUSec": "0"
    }
}

TASK [linux-system-roles.certificate : Ensure certificate requests] ************
task path: /tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:100
Wednesday 03 August 2022  07:54:45 +0000 (0:00:00.516)       0:00:12.022 ****** 
changed: [/cache/rhel-7.qcow2] => (item={'name': 'monger-cockpit', 'dns': ['localhost', 'www.example.com'], 'ca': 'local', 'group': 'cockpit-ws', 'run_after': 'DEST=/etc/cockpit/ws-certs.d/monger-cockpit.cert\ncat /etc/pki/tls/certs/monger-cockpit.crt \\\n/etc/pki/tls/private/monger-cockpit.key > $DEST\nchmod 640 $DEST\nchown root:cockpit-ws $DEST\n'}) => {
    "ansible_loop_var": "item",
    "changed": true,
    "item": {
        "ca": "local",
        "dns": [
            "localhost",
            "www.example.com"
        ],
        "group": "cockpit-ws",
        "name": "monger-cockpit",
        "run_after": "DEST=/etc/cockpit/ws-certs.d/monger-cockpit.cert\ncat /etc/pki/tls/certs/monger-cockpit.crt \\\n/etc/pki/tls/private/monger-cockpit.key > $DEST\nchmod 640 $DEST\nchown root:cockpit-ws $DEST\n"
    }
}

MSG:

Certificate requested (new). Pre/Post run hooks updated. File attributes updated.
META: role_complete for /cache/rhel-7.qcow2

TASK [Get PEM of certmonger's local CA] ****************************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:62
Wednesday 03 August 2022  07:54:46 +0000 (0:00:00.856)       0:00:12.879 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "cmd": [
        "openssl",
        "pkcs12",
        "-in",
        "/var/lib/certmonger/local/creds",
        "-out",
        "/var/lib/certmonger/local/ca.pem",
        "-nokeys",
        "-nodes",
        "-passin",
        "pass:"
    ],
    "delta": "0:00:00.010377",
    "end": "2022-08-03 03:54:46.668841",
    "rc": 0,
    "start": "2022-08-03 03:54:46.658464"
}

STDERR:

MAC verified OK

TASK [test - cockpit works with TLS and expected certificate] ******************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:69
Wednesday 03 August 2022  07:54:47 +0000 (0:00:00.316)       0:00:13.195 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "curl",
        "--cacert",
        "/var/lib/certmonger/local/ca.pem",
        "https://localhost:9090"
    ],
    "delta": "0:00:00.224647",
    "end": "2022-08-03 03:54:47.199191",
    "rc": 0,
    "start": "2022-08-03 03:54:46.974544"
}

STDOUT:

<!DOCTYPE html>
<html>
  <head>
    <title>Loading...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="robots" content="noindex">
    <meta insert_dynamic_content_here><script>
(function (root, data) {
    window.cockpit_po = data;
/* The syntax of this line is important for po2json */
}(this, {"":{"language":"en"}}));
</script>
<base href="/">
    <script>
var environment = {"page":{"connect":false,"require_host":false},"hostname":"ibm-p8-kvm-03-guest-02.virt.pnr.lab.eng.rdu2.redhat.com","os-release":{"NAME":"Red Hat Enterprise Linux Server","ID":"rhel","PRETTY_NAME":"Red Hat Enterprise Linux Server 7.9 (Maipo)","VARIANT":"Server","VARIANT_ID":"server","CPE_NAME":"cpe:/o:redhat:enterprise_linux:7.9:GA:server","ID_LIKE":"fedora"}};
    </script>
    <script>
/* global XMLHttpRequest */
(function(a) {
    var r;
    /* Some browsers fail localStorage access due to corruption, preventing Cockpit login */    try {
        r = window.localStorage;
        window.localStorage.removeItem("url-root");
    } catch (e) {
        r = window.sessionStorage;
        a.warn(String(e));
    }
    var s;
    var l = window.environment || {};
    var u = l.OAuth || null;
    if (u) {
        if (!u.TokenParam) u.TokenParam = "access_token";
        if (!u.ErrorParam) u.ErrorParam = "error_description";
    }
    var t = /\$\{([^}]+)\}|\$([a-zA-Z0-9_]+)/g;
    function c(e /* ... */) {
        var o = Array.prototype.slice.call(arguments, 1);
        return e.replace(t, function(e, t, n) {
            return o[t || n] || "";
        });
    }
    function n(e) {
        if (window.cockpit_po) {
            var t = window.cockpit_po[e];
            if (t && t[1]) return t[1];
        }
        return e;
    }
    function i() {
        if (!document.querySelectorAll) return;
        var e = document.querySelectorAll("[translate]");
        for (var t = 0; t < e.length; t++) e[t].textContent = n(e[t].textContent);
    }
    var d = n;
    var f, p, w, v;
    var o = /[?&]?([^=]+)=([^&]*)/g;
    var g = null;
    function y(e) {
        e = e.split("+").join(" ");
        var t = {};
        var n;
        for (;;) {
            n = o.exec(e);
            if (!n) break;
            t[decodeURIComponent(n[1])] = decodeURIComponent(n[2]);
        }
        return t;
    }
    if (!a) a = function() {};
    function m(e) {
        return document.getElementById(e);
    }
    function h(e) {
        if (window.console) a.warn("fatal:", e);
        m("login-again").style.display = "none";
        m("login-wait-validating").style.display = "none";
        if (g) {
            m("login-again").href = g;
            m("login-again").style.display = "block";
        }
        m("login").style.display = "none";
        m("login-details").style.display = "none";
        m("login-fatal").style.display = "block";
        var t = m("login-fatal-message");
        t.textContent = "";
        t.appendChild(document.createTextNode(e));
    }
    function b(e, t) {
        var n;
        var o = m(e);
        if (o && window.getComputedStyle) n = window.getComputedStyle(o, ":before");
        if (!n) return;
        var i;
        var r = n.content;
        if (r && r != "none" && r != "normal") {
            i = r.length;
            if ((r[0] === '"' || r[0] === "'") && i > 2 && r[i - 1] === r[0]) r = r.substr(1, i - 2);
            o.innerHTML = r || t;
        } else {
            o.removeAttribute("class");
        }
    }
    function k() {
        function o(e) {
            if (window.console) a.warn(c(d("This web browser is too old to run Cockpit (missing $0)"), e));
            m("login").style.display = "none";
            m("login-details").style.display = "none";
            m("unsupported-browser").style.display = "block";
            document.body.className += " brand-unsupported-browser";
        }
        function e(t, e) {
            var n;
            try {
                n = e[t];
            } catch (e) {
                h(c(d("The web browser configuration prevents Cockpit from running (inaccessible $0)"), t));
                throw e;
            }
            if (n === undefined) {
                o();
                return false;
            }
            return true;
        }
        function t() {
            /*
             * Be certain to use parenthesis when checking CSS strings
             * as Edge is oddly particular.
             *
             * Instead of "display: inline", use:
             * "(display: inline)"
             *        or
             * "display", "inline"
             */
            var e = [].join.call(arguments, ": ");
            if (!window.CSS.supports.apply(this, arguments)) {
                h(c(d("The web browser configuration prevents Cockpit from running (inaccessible $0)"), e));
                o(e);
                return false;
            }
            return true;
        }
        return ("MozWebSocket" in window || e("WebSocket", window)) && e("XMLHttpRequest", window) && e("sessionStorage", window) && e("JSON", window) && e("defineProperty", Object) && e("console", window) && e("pushState", window.history) && e("textContent", document) && e("CSS", window) && e("supports", window.CSS) && t("display", "flex") && t("display", "grid");
    }
    function x(e) {
        return e.replace(/^\s+|\s+$/g, "");
    }
    /* Sets values for application, url_root and login_path */    function S(e) {
        var t = document.createElement("a");
        var n = document.baseURI;
        var o;
        /* Some IEs don't support baseURI */        if (!n) {
            o = document.getElementsByTagName("base");
            if (o.length > 0) n = o[0].href; else n = "/";
        }
        e = e || "/";
        t.href = n;
        if (t.pathname != "/") {
            s = t.pathname.replace(/^\/+|\/+$/g, "");
            r.setItem("url-root", s);
            if (s && e.indexOf("/" + s) === 0) e = e.replace("/" + s, "") || "/";
        }
        if (e.indexOf("/=") === 0) {
            l.hostname = e.substring(2);
            e = "/cockpit+" + e.split("/")[1];
        } else if (e.indexOf("/cockpit/") !== 0 && e.indexOf("/cockpit+") !== 0) {
            e = "/cockpit";
        }
        p = e.split("/")[1];
        f = "/" + p + "/login";
        if (s) f = "/" + s + f;
        v = p;
        w = f;
    }
    function T(e, t) {
        // On keypress, only accept spacebar (enter acts as a click)
        if (e && e.type === "keypress" && e.key !== " ") return;
        // Stop the <a>'s click handler, otherwise it causes a page reload
                if (e && e.type === "click") e.preventDefault();
        if (t === undefined) t = m("server-group").style.display === "none";
        m("option-group").setAttribute("data-state", t);
        if (t) {
            m("server-group").style.display = "block";
            m("option-caret").setAttribute("class", "caret caret-down");
            m("option-caret").setAttribute("className", "caret caret-down");
        } else {
            m("server-group").style.display = "none";
            m("option-caret").setAttribute("class", "caret caret-right");
            m("option-caret").setAttribute("className", "caret caret-right");
        }
    }
    function e() {
        window.onload = null;
        i();
        S(window.location.pathname);
        /* Determine if we are nested or not, and switch styles */        if (window.location.pathname.indexOf("/" + s + "/cockpit/") === 0 || window.location.pathname.indexOf("/" + s + "/cockpit+") === 0) document.documentElement.setAttribute("class", "inline");
        // Setup title
                var e = l.page.title;
        if (!e || p.indexOf("cockpit+=") === 0) e = l.hostname;
        document.title = e;
        if (p.indexOf("cockpit+=") === 0) {
            m("brand").style.display = "none";
            m("badge").style.visibility = "hidden";
        } else {
            b("badge", "");
            b("brand", "Cockpit");
        }
        if (!k()) return;
        m("show-other-login-options").addEventListener("click", T);
        m("show-other-login-options").addEventListener("keypress", T);
        m("server-clear").addEventListener("click", function() {
            var e = m("server-field");
            e.value = "";
            e.focus();
        });
        /* Setup the user's last choice about the authorized button */        var t = r.getItem("authorized-default") || "";
        if (t.indexOf("password") !== -1) m("authorized-input").checked = true;
        var n = l["os-release"];
        if (n) r.setItem("os-release", JSON.stringify(n));
        var o = window.sessionStorage.getItem("logout-intent") == "explicit";
        if (o) window.sessionStorage.removeItem("logout-intent");
        /* Try automatic/kerberos authentication? */        if (u) {
            m("login-details").style.display = "none";
            m("login").style.display = "none";
            if (o) {
                O();
                m("login-again").textContent = d("Login Again");
                h(d("Logout Successful"));
            } else {
                I();
            }
        } else if (o) {
            z();
        } else {
            C();
        }
    }
    function C() {
        var e = new XMLHttpRequest();
        e.open("GET", f, true);
        e.onreadystatechange = function() {
            if (e.readyState == 4) {
                if (e.status == 200) {
                    j(JSON.parse(e.responseText));
                } else if (e.status == 401) {
                    z();
                } else if (e.statusText) {
                    h(decodeURIComponent(e.statusText));
                } else if (e.status === 0) {
                    z();
                } else {
                    h(c(d("$0 error"), e.status));
                }
            }
        };
        e.send();
    }
    function O() {
        var e = window.location.href.split("#", 2);
        g = u.URL;
        if (u.URL.indexOf("?") > -1) g += "&"; else g += "?";
        g += "redirect_uri=" + encodeURIComponent(e[0]);
    }
    function I() {
        var e = document.createElement("a");
        if (!u.URL) return h(d("Cockpit authentication is configured incorrectly."));
        var t = y(window.location.search);
        if (!window.location.search && window.location.hash) t = y(window.location.hash.slice(1));
        /* Not all providers allow hashes in redirect urls */        var n, o, i;
        O();
        if (t[u.TokenParam]) {
            if (window.sessionStorage.getItem("login-wanted")) {
                e.href = window.sessionStorage.getItem("login-wanted");
                S(e.pathname);
            }
            n = t[u.TokenParam];
            m("login-wait-validating").style.display = "block";
            i = new XMLHttpRequest();
            i.open("GET", f, true);
            i.setRequestHeader("Authorization", "Bearer " + n);
            i.onreadystatechange = function() {
                if (i.readyState == 4) {
                    if (i.status == 200) {
                        j(JSON.parse(i.responseText));
                    } else {
                        o = $(i.getResponseHeader("WWW-Authenticate"), i.responseText);
                        if (o) P(o); else h(decodeURIComponent(i.statusText));
                    }
                }
            };
            i.send();
        } else if (t[u.ErrorParam]) {
            h(t[u.ErrorParam]);
        } else {
            /* Store url we originally wanted in case we
             * had to strip a hash or query params
             */
            window.sessionStorage.setItem("login-wanted", window.location.href);
            window.location = g;
        }
    }
    function E() {
        m("error-group").style.display = "none";
        m("login-error-message").textContent = "";
    }
    function L(e, t) {
        E();
        if (e) {
            /* OAuth failures are always fatal */
            if (u) {
                h(e);
            } else {
                N(t);
                m("login-error-message").textContent = e;
                m("error-group").style.display = "block";
            }
        }
    }
    function A(e) {
        var t = m("server-field").value;
        if (!t) {
            L(e, false);
        } else {
            E();
            m("login-error-message").textContent = e;
            m("error-group").style.display = "block";
            T(null, true);
            N();
        }
    }
    function R(e) {
        var t = m("login-note");
        if (e) {
            t.style.display = "block";
            t.textContent = e;
        } else {
            t.innerHTML = "&nbsp;";
        }
    }
    function H() {
        return l.page.require_host && v.indexOf("cockpit+=") === -1;
    }
    function U() {
        L(null);
        var e;
        var t = x(m("login-user-input").value);
        if (t === "") {
            L(d("User name cannot be empty"));
        } else if (H() && m("server-field").value === "") {
            L(d("Please specify the host to connect to"));
        } else {
            e = m("server-field").value;
            if (e) {
                p = "cockpit+=" + e;
                f = w.replace("/" + v + "/", "/" + p + "/");
            } else {
                p = v;
                f = w;
            }
            m("server-name").textContent = e || l.hostname;
            m("login-button").removeEventListener("click", U);
            /* When checked we tell the server to keep authentication */            var n = m("authorized-input").checked ? "password" : "";
            var o = m("login-password-input").value;
            r.setItem("authorized-default", n);
            var i = {
                Authorization: "Basic " + window.btoa(q(t + ":" + o)),
                "X-Authorize": n
            };
            // allow unknown remote hosts with interactive logins with "Connect to:"
                        if (e) i["X-SSH-Connect-Unknown-Hosts"] = "yes";
            J("GET", i, false);
        }
    }
    function N(e) {
        var t = l.page.connect;
        var n = m("option-group").getAttribute("data-state");
        m("login-wait-validating").style.display = "none";
        m("login").style.visibility = "visible";
        m("login").style.display = "block";
        m("user-group").style.display = e ? "none" : "block";
        m("password-group").style.display = e ? "none" : "block";
        m("conversation-group").style.display = e ? "block" : "none";
        m("login-button-text").textContent = d("Log In");
        m("login-password-input").value = "";
        if (H()) {
            m("option-group").style.display = "none";
            n = true;
        } else {
            m("option-group").style.display = !t || e ? "none" : "block";
        }
        if (!t || e) {
            m("server-group").style.display = "none";
        } else {
            m("server-group").style.display = n ? "block" : "none";
        }
        m("login-button").removeAttribute("disabled");
        if (!e) m("login-button").addEventListener("click", U);
    }
    function z() {
        /* Show the login screen */
        m("server-name").textContent = document.title;
        R(d("Log in with your server user account."));
        m("login-user-input").addEventListener("keydown", function(e) {
            L(null);
            if (e.which == 13) m("login-password-input").focus();
        }, false);
        var e = function(e) {
            L(null);
            if (e.which == 13) U();
        };
        m("login-password-input").addEventListener("keydown", e);
        m("authorized-input").addEventListener("keydown", e);
        N();
        m("login-user-input").focus();
    }
    function P(e) {
        var t = e.echo ? "text" : "password";
        m("conversation-prompt").textContent = e.prompt;
        var n = m("conversation-message");
        var o = e.error || e.message;
        if (o) {
            n.textContent = o;
            n.style.display = "block";
        } else {
            n.style.display = "none";
        }
        var i = m("conversation-input");
        i.value = "";
        if (e["default"]) i.value = e["default"];
        i.setAttribute("type", t);
        i.focus();
        L("");
        function r() {
            m("conversation-input").removeEventListener("keydown", s);
            m("login-button").removeEventListener("click", r);
            L(null, true);
            W(e.id, m("conversation-input").value);
        }
        function s(e) {
            L(null, true);
            if (e.which == 13) {
                r();
            }
        }
        m("conversation-input").addEventListener("keydown", s);
        m("login-button").addEventListener("click", r);
        N(true);
    }
    function q(e) {
        return window.unescape(encodeURIComponent(e));
    }
    function $(e, t) {
        var n;
        var o;
        var i;
        var r;
        if (!e) return null;
        n = e.split(" ");
        if (n[0].toLowerCase() !== "x-conversation" && n.length != 3) return null;
        r = n[1];
        try {
            o = window.atob(n[2]);
        } catch (e) {
            if (window.console) a.error("Invalid prompt data", e);
            return null;
        }
        try {
            i = JSON.parse(t);
        } catch (e) {
            if (window.console) a.log("Got invalid JSON response for prompt data", e);
            i = {};
        }
        i.id = r;
        i.prompt = o;
        return i;
    }
    function J(e, t, n) {
        m("login-button").setAttribute("disabled", "true");
        var o = new XMLHttpRequest();
        o.open("GET", f, true);
        var i;
        var r;
        var s;
        for (s in t) o.setRequestHeader(s, t[s]);
        o.onreadystatechange = function() {
            if (o.readyState != 4) {
                return;
            } else if (o.status == 200) {
                var e = JSON.parse(o.responseText);
                j(e);
            } else if (o.status == 401) {
                r = o.getResponseHeader("WWW-Authenticate");
                if (r && r.toLowerCase().indexOf("x-conversation") === 0) {
                    i = $(r, o.responseText);
                    if (i) P(i); else h(d("Internal Error: Invalid challenge header"));
                } else {
                    if (window.console) a.log(o.statusText);
                    if (o.statusText.indexOf("authentication-not-supported") > -1) {
                        var t = x(m("login-user-input").value);
                        h(c(d("The server refused to authenticate '$0' using password authentication, and no other supported authentication methods are available."), t));
                    } else if (o.statusText.indexOf("terminated") > -1) {
                        L(d("Authentication Failed: Server closed connection"));
                    } else if (o.statusText.indexOf("no-host") > -1) {
                        A(d("Unable to connect to that address"));
                    } else if (o.statusText.indexOf("unknown-hostkey") > -1) {
                        A(d("Refusing to connect. Hostkey is unknown"));
                    } else if (o.statusText.indexOf("unknown-host") > -1) {
                        A(d("Refusing to connect. Host is unknown"));
                    } else if (o.statusText.indexOf("invalid-hostkey") > -1) {
                        A(d("Refusing to connect. Hostkey does not match"));
                    } else if (n) {
                        L(d("Authentication failed"));
                    } else {
                        L(d("Wrong user name or password"));
                    }
                }
            } else if (o.status == 403) {
                L(decodeURIComponent(o.statusText) || d("Permission denied"));
            } else if (o.statusText) {
                h(decodeURIComponent(o.statusText));
            } else {
                h(c(d("$0 error"), o.status));
            }
            m("login-button").removeAttribute("disabled");
        };
        o.send();
    }
    function W(e, t) {
        var n = {
            Authorization: "X-Conversation " + e + " " + window.btoa(q(t))
        };
        J("GET", n, true);
    }
    function M(e) {
        // Force a reload if not triggered below
        // because only the hash part of the url
        // changed
        var t = window.setTimeout(function() {
            t = null;
            window.location.reload(true);
        }, 100);
        if (e && e != window.location.href) window.location = e;
        // cancel forced reload if we are reloading
                window.onbeforeunload = function() {
            if (t) window.clearTimeout(t);
            t = null;
        };
    }
    function X(n) {
        var e = "/" + p + "/@localhost/";
        if (s) e = "/" + s + e;
        var o = e + "shell/index.html";
        var i = new XMLHttpRequest();
        i.open("GET", e + "manifests.json", true);
        i.onreadystatechange = function() {
            if (i.readyState == 4) {
                if (i.status == 200) {
                    var e = JSON.parse(i.responseText);
                    var t = e ? e["base1"] : {};
                    if (!t["version"] || t["version"] < "119.x") {
                        M(o);
                    } else M(n);
                } else {
                    M(o);
                }
            }
        };
        i.send();
    }
    function G(e, t, n) {
        var o = 0;
        while (o < e.length) {
            var i = e.key(o);
            if (n && i.indexOf("cockpit") !== 0) e.removeItem(i); else if (i.indexOf(t) === 0) e.removeItem(i); else o++;
        }
    }
    function _(e) {
        /* Clear anything not prefixed with
         * different application from sessionStorage
         */
        G(window.sessionStorage, p, true);
        /* Clear anything prefixed with our application
         * and login-data, but not other non-application values.
         */        r.removeItem("login-data");
        G(r, p, false);
        var t;
        if (e && e["login-data"]) {
            t = JSON.stringify(e["login-data"]);
            /* login-data is tied to the auth cookie, since
             * cookies are available after the page
             * session ends login-data should be too.
             */            r.setItem(p + "login-data", t);
            /* Backwards compatbility for packages that aren't application prefixed */            r.setItem("login-data", t);
        }
        /* URL Root is set by cockpit ws and shouldn't be prefixed
         * by application
         */        if (s) r.setItem("url-root", s);
    }
    function j(e) {
        var t = window.sessionStorage.getItem("login-wanted");
        var n = m("server-field").value;
        if (n && p != v) {
            t = "/=" + n;
            if (s) t = "/" + s + t;
        }
        /* clean up sessionStorage. clear anything that isn't prefixed
         * with an application and anything prefixed with our application.
         */        G(window.sessionStorage, p, false);
        _(e);
        /* Make sure that the base1 version is new enough to handle
         * urls that reference machines.
         */        if (p.indexOf("cockpit+=") === 0) {
            X(t);
        } else {
            M(t);
        }
    }
    window.onload = e;
})(window.console);
//# sourceMappingURL=login.min.js.map    </script>
    <style>
#option-group,.btn,.cross,button{cursor:pointer}
.btn,label{font-weight:600}
.btn,img{vertical-align:middle}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:62.5%;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.66666667;background-color:#fff}
a{background:0 0;color:#0099d3;text-decoration:none}
.btn,.btn:active{background-image:none}
a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}
a:active,a:hover{outline:0}
a:focus,a:hover{color:#00618a;text-decoration:underline}
img{border:0}
button,input,select,textarea{font-family:inherit;margin:0;font-size:inherit;line-height:inherit}
button,input{line-height:normal}
.btn,.form-control{line-height:1.66666667}
button,select{text-transform:none}
button{-webkit-appearance:button;overflow:visible}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
p{margin:0 0 10px}
.container{margin-right:auto;margin-left:auto;padding-left:20px;padding-right:20px}
.form-group,.row{margin-right:-20px}
.container:after,.container:before,.row:after,.row:before{content:" ";display:table}
.container:after,.row:after{clear:both}
@media (min-width:768px){.container{width:760px}
}
@media (min-width:992px){.container{width:980px}
}
@media (min-width:1200px){.container{width:1180px}
}
.row{margin-left:-20px}
.col-lg-5,.col-lg-7,.col-md-10,.col-md-2,.col-md-6,.col-sm-1,.col-sm-10,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-5,.col-sm-6,.col-sm-7,.col-xs-12{position:relative;min-height:1px;padding-left:20px;padding-right:20px}
.col-xs-12{float:left;width:100%}
@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-5,.col-sm-6,.col-sm-7{float:left}
.col-sm-12{width:100%}
.col-sm-10{width:83.33333333333334%}
.col-sm-7{width:58.333333333333336%}
.col-sm-6{width:50%}
.col-sm-5{width:41.66666666666667%}
.col-sm-3{width:25%}
.col-sm-2{width:16.666666666666664%}
.col-sm-1{width:8.333333333333332%}
.col-sm-offset-2{margin-left:16.666666666666664%}
.control-label{text-align:right}
}
@media (min-width:992px){.col-md-10,.col-md-2,.col-md-6{float:left}
.col-md-10{width:83.33333333333334%}
.col-md-6{width:50%}
.col-md-2{width:16.666666666666664%}
}
@media (min-width:1200px){.col-lg-5,.col-lg-7{float:left}
.col-lg-7{width:58.333333333333336%}
.col-lg-5{width:41.66666666666667%}
}
label{display:inline-block;margin-bottom:5px}
.form-control{height:26px;color:#333}
.form-control[type=text],.form-control[type=password]{display:block;width:100%;padding:2px 6px;font-size:12px;background-color:#fff;background-image:none;border:1px solid #bababa;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}
.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}
.form-control:-moz-placeholder{color:#999;font-style:italic}
.form-control::-moz-placeholder{color:#999;font-style:italic;opacity:1}
.form-control:-ms-input-placeholder{color:#999;font-style:italic}
.form-control::-webkit-input-placeholder{color:#999;font-style:italic}
.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}
.control-label{margin-top:0;margin-bottom:0;padding-top:3px}
.form-group{margin-left:-20px}
.form-group:after{clear:both;margin-bottom:15px}
.form-group:after,.form-group:before{content:" ";display:table}
.btn{display:inline-block;margin-bottom:0;text-align:center;border:1px solid transparent;white-space:nowrap;padding:2px 6px;font-size:12px;border-radius:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-box-shadow:0 2px 3px rgba(0,0,0,.1);box-shadow:0 2px 3px rgba(0,0,0,.1)}
.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}
.btn:focus,.btn:hover{color:#4d5258;text-decoration:none}
.alert-danger,.btn-primary,.login-pf .container .help-block,body{color:#fff}
.btn:active{outline:0;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}
.btn-lg{padding:6px 10px;font-size:14px;line-height:1.33;border-radius:1px}
@-ms-viewport{width:device-width}
.btn-primary{background-color:#189ad1;background-image:-webkit-linear-gradient(top,#1cace8 0,#1998cc 100%);background-image:linear-gradient(to bottom,#1cace8 0,#1998cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1cace8', endColorstr='#ff1998cc', GradientType=0);border-color:#267da1}
.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background-color:#189ad1;background-image:none;border-color:#267da1;color:#fff}
.btn-primary:active{background-image:none}
@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url(cockpit/static/fonts/OpenSans-Regular-webfont.woff) format('woff')}
@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:url(cockpit/static/fonts/OpenSans-Bold-webfont.woff) format('woff')}
.form-control:hover{border-color:#7BB2DD}
.login-pf{height:100%}
.login-pf #brand{position:relative;top:-70px}
.login-pf #brand img{display:block;margin:0 auto;max-width:100%}
@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}
}
.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}
.login-pf .container{background-color:#181818;background-color:rgba(255,255,255,.055);clear:right;padding-bottom:40px;padding-top:20px;width:auto}
@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}
.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}
}
.login-pf .container .details p:first-child{border-top:1px solid #474747;padding-top:25px;margin-top:25px}
@media (min-width:768px){.login-pf .container .login-area{border-right:1px solid #474747}
.login-pf .container .details{padding-left:40px}
.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}
}
.login-pf .container .details p{margin-bottom:2px}
.login-pf .container .control-label{font-size:13px;font-weight:400;text-align:left}
.login-pf .container .form-group:last-child,.login-pf .container .form-group:last-child .help-block:last-child{margin-bottom:0}
@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}
to{-webkit-transform:rotate(359deg)}
}
@keyframes rotation{from{transform:rotate(0)}
to{transform:rotate(359deg)}
}
.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(0,0,0,.25);border-left:4px solid rgba(0,0,0,.25);border-right:4px solid rgba(0,0,0,.25);border-radius:100%;border-top:4px solid rgba(0,0,0,.75);height:24px;margin:4px 0 0;position:relative;width:24px}
.alert{padding:7px 11px;margin-bottom:20px;border:2px solid transparent;border-radius:1px}
.alert-danger{background:0 0;border-color:#c00;font-weight:700}
#option-group{margin-left:-20px;margin-right:-20px}
#option-group a{color:inherit}
#server-group:before{clear:both;margin-top:5px}
.login-fatal{font-size:130%}
.unsupported-browser ul{color:#aaa;display:inline-block;margin:0 auto;text-align:left}
.unsupported-browser a{color:#fff;font-weight:700;text-decoration:underline}
.cross,.inline .container .help-block{color:#000}
.login-browser-recommendations{margin-top:6rem}
@media screen and (max-width:480px){.unsupported-browser .container>.row>.col-sm-12{position:static}
}
@media screen and (min-width:481px){.brand-unsupported-browser #brand{margin-left:-40px;position:absolute;text-align:center;width:100%}
.unsupported-browser{font-size:140%;margin-left:-30px;text-align:center}
.unsupported-browser-heading{font-size:3rem;left:50%;margin:0 0 0 -32rem;position:absolute;text-align:center;top:-16rem;width:64rem}
.login-browser-recommendations h3{font-weight:400;margin-top:0}
}
.caret,.server-box{position:relative}
#login-wait-validating div{float:left}
.conversation-prompt{white-space:normal;word-wrap:break-word}
.control-label{white-space:nowrap;font-size:13px}
.spinner{border-color:rgba(255,255,255,.75) rgba(255,255,255,.25) rgba(255,255,255,.25)}
.inline #badge,.inline #brand,.inline #login-details{display:none}
.inline body{background:0 0!important;color:#000}
@media (min-width:768px){.login-button-container{float:right}
}
.caret{display:inline-block;top:4px}
.caret-down{transform:rotate(90deg);-moz-transform:rotate(90deg);-webkit-transform:rotate(90deg);transform-origin:8px 8px;-moz-transform-origin:8px 8px;-webkit-transform-origin:8px 8px}
.cross{position:absolute;right:25px;top:2px;font-weight:700;font-size:14px;opacity:.7}
#option-group:hover svg,.cross:hover{opacity:1}
#option-group div{margin-left:-3px;margin-top:3px;margin-bottom:10px}
#option-group svg{opacity:.7}
#authorized-input{width:13px;height:13px;padding:0;vertical-align:bottom;margin:8px 5px 3px 0}
#login-button{padding:7px}
#login-button .spinner{display:none}
#login-button[disabled]{padding:0;background-color:#333;background-image:none;border-color:#555}
#login-button[disabled] .spinner{display:inline-block}
#login-button[disabled] #login-button-text,.hide-before:before{display:none}
@media (max-width:480px){.login-pf{display:flex;flex-direction:column-reverse;height:auto;position:relative}
.row{display:flex;flex-direction:column}
.login-pf .container{width:100%}
.login-pf #badge{max-width:33vw;margin:3rem auto;height:8rem;padding:0;background-position:50% 100%}
.container>.row>.col-sm-12{order:1;position:absolute;bottom:0;left:0;width:100%;text-align:center}
.login-pf #brand{position:static;font-size:inherit;background-position:50% 50%}
.details{text-align:center}
}
/*# sourceMappingURL=login.min.css.map */    </style>
    <link href="cockpit/static/branding.css" type="text/css" rel="stylesheet">
  </head>
  <body class="login-pf">
    <span id="badge">
    </span>
    <div class="container">
      <div class="row">
        <div class="col-sm-12">
          <div id="brand" class="hide-before">
          </div><!--/#brand-->
        </div><!--/.col-*-->

        <div id="login" class="col-sm-7 col-md-6 col-lg-5 login-area" style="visibility: hidden;">
          <div role="form">

            <div id="error-group" class="alert alert-danger" hidden>
              <span id="login-error-message"></span>
            </div>

            <div id="conversation-group" class="form-group" hidden>
              <div class="col-sm-12 col-md-12">
                <div id="conversation-message"></div>
                <label id="conversation-prompt" for="conversation-input"></label>
              </div>
              <div class="col-sm-12 col-md-12">
                <input type="password" class="form-control" id="conversation-input">
              </div>
            </div>

            <div id="user-group" class="form-group">
              <label for="login-user-input" class="col-sm-2 col-md-2 control-label" translate>User name</label>
              <div class="col-sm-10 col-md-10">
                <input type="text" class="form-control" id="login-user-input" autocorrect="off" autocapitalize="none" autofocus>
              </div>
            </div>

            <div id="password-group" class="form-group">
              <label for="login-password-input" class="col-sm-2 col-md-2 control-label" translate>Password</label>
              <div class="col-sm-10 col-md-10">
                <input type="password" class="form-control" id="login-password-input">
              </div>
              <div class="col-sm-2 col-md-2"></div>
              <div class="col-sm-10 col-md-10">
                <input type="checkbox" class="form-control" id="authorized-input">
                <label for="authorized-input" class="control-label" translate>Reuse my password for privileged tasks</label>
              </div>
            </div>

            <div id="option-group">
              <div class="col-sm-5 col-md-5">
                <i id="option-caret" class="caret caret-right" aria-hidden="true">
                    <svg height="16" width="16" viewBox="0 0 16 16">
                        <polygon fill="#ffffff" points="4,0 4,14 12,7">
                        </polygon>
                    </svg>
                </i>
                <a href="#" id="show-other-login-options" translate>Other Options</a>
              </div>
            </div>

            <div id="server-group" class="form-group" hidden>
              <label title="Log in to another system. Leave blank to log in to the local system." for="server-field" class="col-sm-2 col-md-2 control-label" translate>Connect to</label>
              <div class="col-sm-10 col-md-10 server-box">
                <input type="text" class="form-control" id="server-field">
                <span class="cross" id="server-clear" aria-hidden="true">&#x274c;</span>
              </div>
            </div>

            <div class="form-group">
              <div class="col-md-3 col-sm-3 login-button-container">
                <button class="btn btn-primary btn-lg col-xs-12" id="login-button">
                  <span class="spinner"></span>
                  <span id="login-button-text" translate>Log In</span>
                </button>
              </div>
            </div>
          </div>
        </div><!--/.col-*-->

        <div class="col-sm-5 col-md-6 col-lg-7 details" id="login-details">
          <p>
            <label class="control-label"><span translate>Server</span>: <b id="server-name"></b></label>
          </p>
          <p id="login-note" class="login-note"></p>
        </div><!--/.col-*-->

        <div class="col-sm-5 col-md-6 col-lg-7" id="login-wait-validating" hidden>
          <div class="col-sm-4">
            <span class="help-block" translate>Validating authentication token</span>
          </div>
          <div class="col-sm-1">
            <div class="spinner col-xs-15">
            </div>
          </div>
        </div>

        <div class="col-sm-12" id="login-fatal" hidden>
          <span id="login-fatal-message"></span>
          <a id="login-again" translate hidden>Try Again</a>
        </div>

        <div class="unsupported-browser col-sm-12" id="unsupported-browser" hidden>
          <h2 classname="unsupported-browser-heading" translate>A modern browser is required for security, reliability, and performance.</h2>
          <div class="login-browser-recommendations">
            <div class="col-sm-6">
              <h3 translate>Download a new browser for free</h3>
              <ul>
                <li><a href="https://firefox.com/">Mozilla Firefox</a> / Linux, Windows, macOS</li>
                <li><a href="https://google.com/chrome">Google Chrome</a> / Linux, Windows, macOS</li>
              </ul>
            </div>
            <div class="col-sm-6">
              <h3 translate>Or use a bundled browser</h3>
              <ul>
                <li><a href="https://microsoftedge.com/">Microsoft Edge</a> / Windows 10+</li>
                <li><a href="https://apple.com/safari/">Apple Safari</a> / macOS</li>
              </ul>
            </div>
          </div>
        </div>

      </div><!--/.row-->
    </div><!--/.container-->
  </body>
</html>


STDERR:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 39147    0 39147    0     0   178k      0 --:--:-- --:--:-- --:--:--  179k

TASK [test - get certmonger tracking status] ***********************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:76
Wednesday 03 August 2022  07:54:47 +0000 (0:00:00.539)       0:00:13.735 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "getcert",
        "list",
        "--tracking-only",
        "-f",
        "/etc/pki/tls/certs/monger-cockpit.crt"
    ],
    "delta": "0:00:00.044566",
    "end": "2022-08-03 03:54:47.555817",
    "rc": 0,
    "start": "2022-08-03 03:54:47.511251"
}

STDOUT:

Number of certificates and requests being tracked: 1.
Request ID '20220803075446':
	status: MONITORING
	stuck: no
	key pair storage: type=FILE,location='/etc/pki/tls/private/monger-cockpit.key'
	certificate: type=FILE,location='/etc/pki/tls/certs/monger-cockpit.crt'
	CA: local
	issuer: CN=a3460cb5-02d64653-b9457a1f-495a7c1f,CN=Local Signing Authority
	subject: CN=localhost
	expires: 2023-08-03 07:54:45 UTC
	dns: localhost,www.example.com
	key usage: digitalSignature,keyEncipherment
	eku: id-kp-serverAuth,id-kp-clientAuth
	pre-save command: 
	post-save command: /etc/certmonger/post-scripts/monger-cockpit-59d1099.sh
	track: yes
	auto-renew: yes

TASK [test - ensure certificate generation succeeded] **************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:83
Wednesday 03 August 2022  07:54:47 +0000 (0:00:00.344)       0:00:14.079 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false
}

MSG:

All assertions passed

TASK [test - clean up tracked certificate] *************************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:87
Wednesday 03 August 2022  07:54:47 +0000 (0:00:00.030)       0:00:14.110 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "getcert",
        "stop-tracking",
        "-f",
        "/etc/pki/tls/certs/monger-cockpit.crt"
    ],
    "delta": "0:00:00.034105",
    "end": "2022-08-03 03:54:47.917526",
    "rc": 0,
    "start": "2022-08-03 03:54:47.883421"
}

STDOUT:

Request "20220803075446" removed.

TASK [test - clean up generated certificate] ***********************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:94
Wednesday 03 August 2022  07:54:48 +0000 (0:00:00.327)       0:00:14.437 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "path": "/etc/pki/tls/certs/monger-cockpit.crt",
    "state": "absent"
}

TASK [test - clean up generated private key] ***********************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:99
Wednesday 03 August 2022  07:54:48 +0000 (0:00:00.295)       0:00:14.732 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "path": "/etc/pki/tls/private/monger-cockpit.key",
    "state": "absent"
}

TASK [test - clean up copied certificate] **************************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:104
Wednesday 03 August 2022  07:54:48 +0000 (0:00:00.307)       0:00:15.040 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "path": "/etc/cockpit/ws-certs.d/monger-cockpit.cert",
    "state": "absent"
}

TASK [test - generic cleanup] **************************************************
task path: /tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:109
Wednesday 03 August 2022  07:54:49 +0000 (0:00:00.295)       0:00:15.335 ****** 
included: /tmp/tmp6hcaky7k/tests/tasks/cleanup.yml for /cache/rhel-7.qcow2

TASK [cleanup - packages] ******************************************************
task path: /tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:1
Wednesday 03 August 2022  07:54:49 +0000 (0:00:00.028)       0:00:15.364 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "changes": {
        "removed": [
            "cockpit-bridge",
            "cockpit-ws"
        ]
    },
    "rc": 0,
    "results": [
        "cockpit-doc is not installed",
        "Loaded plugins: search-disabled-repos\nResolving Dependencies\n--> Running transaction check\n---> Package cockpit-bridge.x86_64 0:195.10-1.el7 will be erased\n--> Processing Dependency: cockpit-bridge >= 195.10-1.el7 for package: cockpit-system-195.10-1.el7.noarch\n---> Package cockpit-ws.x86_64 0:195.10-1.el7 will be erased\n--> Running transaction check\n---> Package cockpit-system.noarch 0:195.10-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package                Arch           Version              Repository     Size\n================================================================================\nRemoving:\n cockpit-bridge         x86_64         195.10-1.el7         @rhel         868 k\n cockpit-ws             x86_64         195.10-1.el7         @rhel         1.6 M\nRemoving for dependencies:\n cockpit-system         noarch         195.10-1.el7         @rhel         1.8 M\n\nTransaction Summary\n================================================================================\nRemove  2 Packages (+1 Dependent package)\n\nInstalled size: 4.3 M\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Erasing    : cockpit-system-195.10-1.el7.noarch                           1/3 \n  Erasing    : cockpit-bridge-195.10-1.el7.x86_64                           2/3 \n  Erasing    : cockpit-ws-195.10-1.el7.x86_64                               3/3 \n  Verifying  : cockpit-system-195.10-1.el7.noarch                           1/3 \n  Verifying  : cockpit-ws-195.10-1.el7.x86_64                               2/3 \n  Verifying  : cockpit-bridge-195.10-1.el7.x86_64                           3/3 \n\nRemoved:\n  cockpit-bridge.x86_64 0:195.10-1.el7     cockpit-ws.x86_64 0:195.10-1.el7    \n\nDependency Removed:\n  cockpit-system.noarch 0:195.10-1.el7                                          \n\nComplete!\n"
    ]
}

TASK [cleanup - find certificates] *********************************************
task path: /tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:13
Wednesday 03 August 2022  07:54:50 +0000 (0:00:01.578)       0:00:16.943 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "examined": 2,
    "files": [
        {
            "atime": 1659513271.2529745,
            "ctime": 1659513271.2499745,
            "dev": 64769,
            "gid": 0,
            "gr_name": "root",
            "inode": 12599744,
            "isblk": false,
            "ischr": false,
            "isdir": false,
            "isfifo": false,
            "isgid": false,
            "islnk": true,
            "isreg": false,
            "issock": false,
            "isuid": false,
            "mode": "0777",
            "mtime": 1659513271.2499745,
            "nlink": 1,
            "path": "/etc/cockpit/ws-certs.d/50-system-role.crt",
            "pw_name": "root",
            "rgrp": true,
            "roth": true,
            "rusr": true,
            "size": 17,
            "uid": 0,
            "wgrp": true,
            "woth": true,
            "wusr": true,
            "xgrp": true,
            "xoth": true,
            "xusr": true
        },
        {
            "atime": 1659513271.5429747,
            "ctime": 1659513271.5399747,
            "dev": 64769,
            "gid": 0,
            "gr_name": "root",
            "inode": 12599745,
            "isblk": false,
            "ischr": false,
            "isdir": false,
            "isfifo": false,
            "isgid": false,
            "islnk": true,
            "isreg": false,
            "issock": false,
            "isuid": false,
            "mode": "0777",
            "mtime": 1659513271.5399747,
            "nlink": 1,
            "path": "/etc/cockpit/ws-certs.d/50-system-role.key",
            "pw_name": "root",
            "rgrp": true,
            "roth": true,
            "rusr": true,
            "size": 17,
            "uid": 0,
            "wgrp": true,
            "woth": true,
            "wusr": true,
            "xgrp": true,
            "xoth": true,
            "xusr": true
        }
    ],
    "matched": 2,
    "skipped_paths": {}
}

MSG:

All paths examined

TASK [cleanup - certificates] **************************************************
task path: /tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:23
Wednesday 03 August 2022  07:54:51 +0000 (0:00:00.422)       0:00:17.365 ****** 
changed: [/cache/rhel-7.qcow2] => (item={'uid': 0, 'woth': True, 'mtime': 1659513271.2499745, 'inode': 12599744, 'isgid': False, 'size': 17, 'roth': True, 'isuid': False, 'isreg': False, 'pw_name': 'root', 'gid': 0, 'ischr': False, 'wusr': True, 'xoth': True, 'rusr': True, 'nlink': 1, 'issock': False, 'rgrp': True, 'gr_name': 'root', 'path': '/etc/cockpit/ws-certs.d/50-system-role.crt', 'xusr': True, 'atime': 1659513271.2529745, 'isdir': False, 'ctime': 1659513271.2499745, 'isblk': False, 'xgrp': True, 'dev': 64769, 'wgrp': True, 'isfifo': False, 'mode': '0777', 'islnk': True}) => {
    "ansible_loop_var": "item",
    "changed": true,
    "item": {
        "atime": 1659513271.2529745,
        "ctime": 1659513271.2499745,
        "dev": 64769,
        "gid": 0,
        "gr_name": "root",
        "inode": 12599744,
        "isblk": false,
        "ischr": false,
        "isdir": false,
        "isfifo": false,
        "isgid": false,
        "islnk": true,
        "isreg": false,
        "issock": false,
        "isuid": false,
        "mode": "0777",
        "mtime": 1659513271.2499745,
        "nlink": 1,
        "path": "/etc/cockpit/ws-certs.d/50-system-role.crt",
        "pw_name": "root",
        "rgrp": true,
        "roth": true,
        "rusr": true,
        "size": 17,
        "uid": 0,
        "wgrp": true,
        "woth": true,
        "wusr": true,
        "xgrp": true,
        "xoth": true,
        "xusr": true
    },
    "path": "/etc/cockpit/ws-certs.d/50-system-role.crt",
    "state": "absent"
}
changed: [/cache/rhel-7.qcow2] => (item={'uid': 0, 'woth': True, 'mtime': 1659513271.5399747, 'inode': 12599745, 'isgid': False, 'size': 17, 'roth': True, 'isuid': False, 'isreg': False, 'pw_name': 'root', 'gid': 0, 'ischr': False, 'wusr': True, 'xoth': True, 'rusr': True, 'nlink': 1, 'issock': False, 'rgrp': True, 'gr_name': 'root', 'path': '/etc/cockpit/ws-certs.d/50-system-role.key', 'xusr': True, 'atime': 1659513271.5429747, 'isdir': False, 'ctime': 1659513271.5399747, 'isblk': False, 'xgrp': True, 'dev': 64769, 'wgrp': True, 'isfifo': False, 'mode': '0777', 'islnk': True}) => {
    "ansible_loop_var": "item",
    "changed": true,
    "item": {
        "atime": 1659513271.5429747,
        "ctime": 1659513271.5399747,
        "dev": 64769,
        "gid": 0,
        "gr_name": "root",
        "inode": 12599745,
        "isblk": false,
        "ischr": false,
        "isdir": false,
        "isfifo": false,
        "isgid": false,
        "islnk": true,
        "isreg": false,
        "issock": false,
        "isuid": false,
        "mode": "0777",
        "mtime": 1659513271.5399747,
        "nlink": 1,
        "path": "/etc/cockpit/ws-certs.d/50-system-role.key",
        "pw_name": "root",
        "rgrp": true,
        "roth": true,
        "rusr": true,
        "size": 17,
        "uid": 0,
        "wgrp": true,
        "woth": true,
        "wusr": true,
        "xgrp": true,
        "xoth": true,
        "xusr": true
    },
    "path": "/etc/cockpit/ws-certs.d/50-system-role.key",
    "state": "absent"
}

TASK [cleanup - config file] ***************************************************
task path: /tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:32
Wednesday 03 August 2022  07:54:51 +0000 (0:00:00.565)       0:00:17.930 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "path": "/etc/cockpit/cockpit.conf",
    "state": "absent"
}

TASK [cleanup - port customization] ********************************************
task path: /tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:40
Wednesday 03 August 2022  07:54:52 +0000 (0:00:00.284)       0:00:18.215 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "path": "/etc/systemd/system/cockpit.socket.d/",
    "state": "absent"
}

TASK [cleanup - reload systemd] ************************************************
task path: /tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:48
Wednesday 03 August 2022  07:54:52 +0000 (0:00:00.288)       0:00:18.503 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "name": null,
    "status": {}
}
META: ran handlers
META: ran handlers

PLAY RECAP *********************************************************************
/cache/rhel-7.qcow2        : ok=36   changed=13   unreachable=0    failed=0    skipped=9    rescued=0    ignored=0   

Wednesday 03 August 2022  07:54:52 +0000 (0:00:00.423)       0:00:18.926 ****** 
=============================================================================== 
linux-system-roles.certificate : Ensure certificate role dependencies are installed --- 2.30s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:5 --
linux-system-roles.certificate : Ensure provider packages are installed --- 2.07s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:22 -
cleanup - packages ------------------------------------------------------ 1.58s
/tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:1 ------------------------------------
set up internal repositories -------------------------------------------- 1.35s
/cache/rhel-7_setup.yml:5 -----------------------------------------------------
Gathering Facts --------------------------------------------------------- 0.92s
/tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:5 -----------------------
linux-system-roles.certificate : Ensure certificate requests ------------ 0.86s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:100 
linux-system-roles.cockpit : Ensure Cockpit Web Console is started/stopped and enabled/disabled --- 0.67s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:75 -----
linux-system-roles.cockpit : Ensure Cockpit Web Console packages are installed. --- 0.64s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/setup-yum.yml:8 -
linux-system-roles.cockpit : List active RHEL repositories -------------- 0.60s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:9 ------
cleanup - certificates -------------------------------------------------- 0.57s
/tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:23 -----------------------------------
test - cockpit works with TLS and expected certificate ------------------ 0.54s
/tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:69 ----------------------
linux-system-roles.certificate : Ensure provider service is running ----- 0.52s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:88 -
linux-system-roles.cockpit : Clean up port configuration file for undefined custom port --- 0.47s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/main.yml:66 -----
linux-system-roles.certificate : Ensure ansible_facts used by role ------ 0.44s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/set_vars.yml:2 
linux-system-roles.cockpit : Ensure ansible_facts used by role ---------- 0.43s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.cockpit/tasks/set_vars.yml:2 --
cleanup - reload systemd ------------------------------------------------ 0.42s
/tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:48 -----------------------------------
cleanup - find certificates --------------------------------------------- 0.42s
/tmp/tmp6hcaky7k/tests/tasks/cleanup.yml:13 -----------------------------------
linux-system-roles.certificate : Ensure pre-scripts hooks directory exists --- 0.38s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:33 -
test - get certmonger tracking status ----------------------------------- 0.34s
/tmp/tmp6hcaky7k/tests/tests_certificate_runafter.yml:76 ----------------------
linux-system-roles.certificate : Ensure post-scripts hooks directory exists --- 0.33s
/tmp/tmp6hcaky7k/tests/roles/linux-system-roles.certificate/tasks/main.yml:59 -
ansible-playbook [core 2.12.6]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /tmp/tmp1dlaws1u
  executable location = /usr/bin/ansible-playbook
  python version = 3.9.13 (main, May 18 2022, 00:00:00) [GCC 11.3.1 20220421 (Red Hat 11.3.1-2)]
  jinja version = 2.11.3
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
Skipping callback 'debug', as we already have a stdout callback.
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: rhel-7_setup.yml *****************************************************
1 plays in /cache/rhel-7_setup.yml

PLAY [Setup repos] *************************************************************
META: ran handlers

TASK [set up internal repositories] ********************************************
task path: /cache/rhel-7_setup.yml:5
Wednesday 03 August 2022  07:57:56 +0000 (0:00:00.019)       0:00:00.019 ****** 
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => (item=None) => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
ok: [/cache/rhel-7.qcow2] => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result",
    "changed": false
}
META: ran handlers
META: ran handlers

PLAY RECAP *********************************************************************
/cache/rhel-7.qcow2        : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Wednesday 03 August 2022  07:57:57 +0000 (0:00:01.321)       0:00:01.341 ****** 
=============================================================================== 
set up internal repositories -------------------------------------------- 1.32s
/cache/rhel-7_setup.yml:5 -----------------------------------------------------

PLAYBOOK: tests_certificate_runafter.yml ***************************************
1 plays in /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml

PLAY [test certificate issuance with run_after shell script] *******************

TASK [Gathering Facts] *********************************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:5
Wednesday 03 August 2022  07:57:58 +0000 (0:00:00.035)       0:00:01.377 ****** 
ok: [/cache/rhel-7.qcow2]
META: ran handlers

TASK [Download current linux-system-roles.certificate] *************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:8
Wednesday 03 August 2022  07:57:58 +0000 (0:00:00.904)       0:00:02.281 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [Install cockpit] *********************************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:21
Wednesday 03 August 2022  07:57:58 +0000 (0:00:00.035)       0:00:02.316 ****** 

TASK [fedora.linux_system_roles.cockpit : Ensure ansible_facts and variables used by role] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:1
Wednesday 03 August 2022  07:57:59 +0000 (0:00:00.043)       0:00:02.360 ****** 
included: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/set_vars.yml for /cache/rhel-7.qcow2

TASK [fedora.linux_system_roles.cockpit : Ensure ansible_facts used by role] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/set_vars.yml:2
Wednesday 03 August 2022  07:57:59 +0000 (0:00:00.025)       0:00:02.386 ****** 
ok: [/cache/rhel-7.qcow2]

TASK [fedora.linux_system_roles.cockpit : Set version specific variables] ******
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/set_vars.yml:7
Wednesday 03 August 2022  07:57:59 +0000 (0:00:00.403)       0:00:02.789 ****** 
ok: [/cache/rhel-7.qcow2] => (item=/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/vars/RedHat-7.yml) => {
    "ansible_facts": {
        "__cockpit_packages": {
            "default": "{{ __cockpit_packages_minimal + __cockpit_packages_default }}",
            "full": "{{ __cockpit_packages_minimal + __cockpit_packages_default + __cockpit_packages_full }}",
            "minimal": "{{ __cockpit_packages_minimal }}"
        },
        "__cockpit_packages_default": [
            "cockpit",
            "cockpit-networkmanager",
            "cockpit-packagekit",
            "cockpit-selinux",
            "cockpit-storaged"
        ],
        "__cockpit_packages_exclude": [
            "cockpit-machines-ovirt",
            "cockpit-tests"
        ],
        "__cockpit_packages_full": [
            "cockpit-composer",
            "cockpit-dashboard",
            "cockpit-doc",
            "cockpit-docker",
            "cockpit-leapp",
            "cockpit-machines",
            "cockpit-pcp",
            "cockpit-shell"
        ],
        "__cockpit_packages_minimal": [
            "cockpit-system",
            "cockpit-ws"
        ]
    },
    "ansible_included_var_files": [
        "/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/vars/RedHat-7.yml"
    ],
    "ansible_loop_var": "item",
    "changed": false,
    "item": "/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/vars/RedHat-7.yml"
}

TASK [fedora.linux_system_roles.cockpit : List active RHEL repositories] *******
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:9
Wednesday 03 August 2022  07:57:59 +0000 (0:00:00.038)       0:00:02.828 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "yum",
        "repolist"
    ],
    "delta": "0:00:00.193782",
    "end": "2022-08-03 03:58:00.131746",
    "rc": 0,
    "start": "2022-08-03 03:57:59.937964"
}

STDOUT:

Loaded plugins: search-disabled-repos
repo id                              repo name                            status
rhel                                 rhel                                 5,231
rhel-7-server-extras-rpms            rhel-7-server-extras-rpms            1,431
rhel-ha-for-rhel-7-server-rpms       rhel-ha-for-rhel-7-server-rpms          52
rhel-optional                        rhel-optional                        4,688
repolist: 11,402

TASK [fedora.linux_system_roles.cockpit : Enable RHEL repositories] ************
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:17
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.623)       0:00:03.452 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [fedora.linux_system_roles.cockpit : Manage cockpit packages using platform specific package manager if applicable] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:21
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.022)       0:00:03.474 ****** 
included: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/setup-yum.yml for /cache/rhel-7.qcow2 => (item=/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/setup-yum.yml)

TASK [fedora.linux_system_roles.cockpit : If choosing custom package set, ensure minimal cockpit is included] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/setup-yum.yml:1
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.033)       0:00:03.508 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "ansible_facts": {
        "cockpit_packages": "minimal"
    },
    "changed": false
}

TASK [fedora.linux_system_roles.cockpit : Ensure Cockpit Web Console packages are installed.] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/setup-yum.yml:6
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.033)       0:00:03.541 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "rc": 0,
    "results": [
        "cockpit-system-195.10-1.el7.noarch providing cockpit-system is already installed",
        "cockpit-ws-195.10-1.el7.x86_64 providing cockpit-ws is already installed"
    ]
}

TASK [fedora.linux_system_roles.cockpit : Create custom port configuration file directory] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:27
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.624)       0:00:04.165 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [fedora.linux_system_roles.cockpit : Create custom port configuration file] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:35
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.023)       0:00:04.188 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [fedora.linux_system_roles.cockpit : Check if SELinux is enabled] *********
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:51
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.021)       0:00:04.210 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [Allow cockpit to own custom port in SELinux policy] **********************
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:58
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.021)       0:00:04.232 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [fedora.linux_system_roles.cockpit : Clean up port configuration file for undefined custom port] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:66
Wednesday 03 August 2022  07:58:00 +0000 (0:00:00.021)       0:00:04.253 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "path": "/etc/systemd/system/cockpit.socket.d/listen.conf",
    "state": "absent"
}

TASK [fedora.linux_system_roles.cockpit : Ensure Cockpit Web Console is started/stopped and enabled/disabled] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:75
Wednesday 03 August 2022  07:58:01 +0000 (0:00:00.440)       0:00:04.694 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "enabled": true,
    "name": "cockpit.socket",
    "state": "started",
    "status": {
        "Accept": "no",
        "ActiveEnterTimestamp": "Wed 2022-08-03 03:57:54 EDT",
        "ActiveEnterTimestampMonotonic": "37563865",
        "ActiveExitTimestampMonotonic": "0",
        "ActiveState": "active",
        "After": "system.slice systemd-journald.socket sysinit.target",
        "AllowIsolate": "no",
        "AmbientCapabilities": "0",
        "AssertResult": "yes",
        "AssertTimestamp": "Wed 2022-08-03 03:57:54 EDT",
        "AssertTimestampMonotonic": "37528339",
        "Backlog": "128",
        "Before": "cockpit-motd.service shutdown.target sockets.target cockpit.service",
        "BindIPv6Only": "default",
        "BlockIOAccounting": "no",
        "BlockIOWeight": "18446744073709551615",
        "Broadcast": "no",
        "CPUAccounting": "no",
        "CPUQuotaPerSecUSec": "infinity",
        "CPUSchedulingPolicy": "0",
        "CPUSchedulingPriority": "0",
        "CPUSchedulingResetOnFork": "no",
        "CPUShares": "18446744073709551615",
        "CanIsolate": "no",
        "CanReload": "no",
        "CanStart": "yes",
        "CanStop": "yes",
        "CapabilityBoundingSet": "18446744073709551615",
        "CollectMode": "inactive",
        "ConditionResult": "yes",
        "ConditionTimestamp": "Wed 2022-08-03 03:57:54 EDT",
        "ConditionTimestampMonotonic": "37528339",
        "Conflicts": "shutdown.target",
        "ControlGroup": "/system.slice/cockpit.socket",
        "ControlPID": "0",
        "DefaultDependencies": "yes",
        "DeferAcceptUSec": "0",
        "Delegate": "no",
        "Description": "Cockpit Web Service Socket",
        "DevicePolicy": "auto",
        "DirectoryMode": "0755",
        "Documentation": "man:cockpit-ws(8)",
        "ExecStartPost": "{ path=/bin/ln ; argv[]=/bin/ln -snf active.motd /run/cockpit/motd ; ignore_errors=yes ; start_time=[Wed 2022-08-03 03:57:54 EDT] ; stop_time=[Wed 2022-08-03 03:57:54 EDT] ; pid=9640 ; code=exited ; status=1 }",
        "ExecStopPost": "{ path=/bin/ln ; argv[]=/bin/ln -snf /usr/share/cockpit/motd/inactive.motd /run/cockpit/motd ; ignore_errors=yes ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
        "FragmentPath": "/usr/lib/systemd/system/cockpit.socket",
        "FreeBind": "no",
        "IOScheduling": "0",
        "IPTOS": "-1",
        "IPTTL": "-1",
        "Id": "cockpit.socket",
        "IgnoreOnIsolate": "no",
        "IgnoreOnSnapshot": "no",
        "IgnoreSIGPIPE": "yes",
        "InactiveEnterTimestampMonotonic": "0",
        "InactiveExitTimestamp": "Wed 2022-08-03 03:57:54 EDT",
        "InactiveExitTimestampMonotonic": "37530088",
        "JobTimeoutAction": "none",
        "JobTimeoutUSec": "0",
        "KeepAlive": "no",
        "KeepAliveIntervalUSec": "0",
        "KeepAliveProbes": "0",
        "KeepAliveTimeUSec": "0",
        "KillMode": "control-group",
        "KillSignal": "15",
        "LimitAS": "18446744073709551615",
        "LimitCORE": "18446744073709551615",
        "LimitCPU": "18446744073709551615",
        "LimitDATA": "18446744073709551615",
        "LimitFSIZE": "18446744073709551615",
        "LimitLOCKS": "18446744073709551615",
        "LimitMEMLOCK": "65536",
        "LimitMSGQUEUE": "819200",
        "LimitNICE": "0",
        "LimitNOFILE": "4096",
        "LimitNPROC": "7150",
        "LimitRSS": "18446744073709551615",
        "LimitRTPRIO": "0",
        "LimitRTTIME": "18446744073709551615",
        "LimitSIGPENDING": "7150",
        "LimitSTACK": "18446744073709551615",
        "ListenStream": "[::]:9090",
        "LoadState": "loaded",
        "Mark": "-1",
        "MaxConnections": "64",
        "MemoryAccounting": "no",
        "MemoryCurrent": "18446744073709551615",
        "MemoryLimit": "18446744073709551615",
        "MountFlags": "0",
        "NAccepted": "0",
        "NConnections": "0",
        "Names": "cockpit.socket",
        "NeedDaemonReload": "no",
        "Nice": "0",
        "NoDelay": "no",
        "NoNewPrivileges": "no",
        "NonBlocking": "no",
        "OOMScoreAdjust": "0",
        "OnFailureJobMode": "replace",
        "PassCredentials": "no",
        "PassSecurity": "no",
        "PipeSize": "0",
        "Priority": "-1",
        "PrivateDevices": "no",
        "PrivateNetwork": "no",
        "PrivateTmp": "no",
        "ProtectHome": "no",
        "ProtectSystem": "no",
        "ReceiveBuffer": "0",
        "RefuseManualStart": "no",
        "RefuseManualStop": "no",
        "RemoveOnStop": "no",
        "RequiredBy": "cockpit.service",
        "Requires": "system.slice sysinit.target",
        "Result": "success",
        "ReusePort": "no",
        "RuntimeDirectoryMode": "0755",
        "SameProcessGroup": "no",
        "SecureBits": "0",
        "SendBuffer": "0",
        "SendSIGHUP": "no",
        "SendSIGKILL": "yes",
        "Slice": "system.slice",
        "SocketMode": "0666",
        "StandardError": "inherit",
        "StandardInput": "null",
        "StandardOutput": "journal",
        "StartupBlockIOWeight": "18446744073709551615",
        "StartupCPUShares": "18446744073709551615",
        "StopWhenUnneeded": "no",
        "SubState": "listening",
        "SyslogLevelPrefix": "yes",
        "SyslogPriority": "30",
        "SystemCallErrorNumber": "0",
        "TTYReset": "no",
        "TTYVHangup": "no",
        "TTYVTDisallocate": "no",
        "TasksAccounting": "no",
        "TasksCurrent": "18446744073709551615",
        "TasksMax": "18446744073709551615",
        "TimeoutUSec": "1min 30s",
        "TimerSlackNSec": "50000",
        "Transient": "no",
        "Transparent": "no",
        "Triggers": "cockpit.service",
        "UMask": "0022",
        "UnitFilePreset": "disabled",
        "UnitFileState": "enabled",
        "WantedBy": "sockets.target",
        "Wants": "cockpit-motd.service"
    }
}

TASK [fedora.linux_system_roles.cockpit : Create cockpit.conf configuration file] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:81
Wednesday 03 August 2022  07:58:01 +0000 (0:00:00.633)       0:00:05.328 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [fedora.linux_system_roles.cockpit : Link to configured existing certificate] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:92
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.022)       0:00:05.350 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}

TASK [fedora.linux_system_roles.cockpit : Link to configured existing certificate key] ***
task path: /tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:102
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.021)       0:00:05.372 ****** 
skipping: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}
META: role_complete for /cache/rhel-7.qcow2

TASK [Allow certmonger to write into Cockpit's certificate directory] **********
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:31
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.031)       0:00:05.404 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0755",
    "owner": "root",
    "path": "/etc/cockpit/ws-certs.d/",
    "secontext": "system_u:object_r:cert_t:s0",
    "size": 58,
    "state": "directory",
    "uid": 0
}

TASK [Generate certificate with linux-system-roles.certificate] ****************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:38
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.295)       0:00:05.699 ****** 

TASK [linux-system-roles.certificate : Set version specific variables] *********
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:2
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.042)       0:00:05.741 ****** 
included: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/set_vars.yml for /cache/rhel-7.qcow2

TASK [linux-system-roles.certificate : Ensure ansible_facts used by role] ******
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/set_vars.yml:2
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.025)       0:00:05.767 ****** 
ok: [/cache/rhel-7.qcow2]

TASK [linux-system-roles.certificate : Set platform/version specific variables] ***
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/set_vars.yml:8
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.426)       0:00:06.194 ****** 
skipping: [/cache/rhel-7.qcow2] => (item=RedHat.yml)  => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat.yml",
    "skip_reason": "Conditional result was False"
}
skipping: [/cache/rhel-7.qcow2] => (item=RedHat.yml)  => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat.yml",
    "skip_reason": "Conditional result was False"
}
ok: [/cache/rhel-7.qcow2] => (item=RedHat_7.yml) => {
    "ansible_facts": {
        "__certificate_default_directory": "/etc/pki/tls",
        "__certificate_packages": [
            "python-pyasn1",
            "python-cryptography",
            "python-dbus"
        ]
    },
    "ansible_included_var_files": [
        "/tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/vars/RedHat_7.yml"
    ],
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat_7.yml"
}
skipping: [/cache/rhel-7.qcow2] => (item=RedHat_7.9.yml)  => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": "RedHat_7.9.yml",
    "skip_reason": "Conditional result was False"
}

TASK [linux-system-roles.certificate : Ensure certificate role dependencies are installed] ***
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:5
Wednesday 03 August 2022  07:58:02 +0000 (0:00:00.076)       0:00:06.270 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "changes": {
        "installed": [
            "python-pyasn1",
            "python-cryptography"
        ]
    },
    "rc": 0,
    "results": [
        "dbus-python-1.1.1-9.el7.x86_64 providing python-dbus is already installed",
        "Loaded plugins: search-disabled-repos\nResolving Dependencies\n--> Running transaction check\n---> Package python2-cryptography.x86_64 0:1.7.2-2.el7 will be installed\n--> Processing Dependency: python-idna >= 2.0 for package: python2-cryptography-1.7.2-2.el7.x86_64\n--> Processing Dependency: python-cffi >= 1.4.1 for package: python2-cryptography-1.7.2-2.el7.x86_64\n--> Processing Dependency: python-enum34 for package: python2-cryptography-1.7.2-2.el7.x86_64\n---> Package python2-pyasn1.noarch 0:0.1.9-7.el7 will be installed\n--> Running transaction check\n---> Package python-cffi.x86_64 0:1.6.0-5.el7 will be installed\n--> Processing Dependency: python-pycparser for package: python-cffi-1.6.0-5.el7.x86_64\n---> Package python-enum34.noarch 0:1.0.4-1.el7 will be installed\n---> Package python-idna.noarch 0:2.4-1.el7 will be installed\n--> Running transaction check\n---> Package python-pycparser.noarch 0:2.14-1.el7 will be installed\n--> Processing Dependency: python-ply for package: python-pycparser-2.14-1.el7.noarch\n--> Running transaction check\n---> Package python-ply.noarch 0:3.4-11.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package                     Arch          Version            Repository   Size\n================================================================================\nInstalling:\n python2-cryptography        x86_64        1.7.2-2.el7        rhel        503 k\n python2-pyasn1              noarch        0.1.9-7.el7        rhel        100 k\nInstalling for dependencies:\n python-cffi                 x86_64        1.6.0-5.el7        rhel        218 k\n python-enum34               noarch        1.0.4-1.el7        rhel         52 k\n python-idna                 noarch        2.4-1.el7          rhel         94 k\n python-ply                  noarch        3.4-11.el7         rhel        123 k\n python-pycparser            noarch        2.14-1.el7         rhel        105 k\n\nTransaction Summary\n================================================================================\nInstall  2 Packages (+5 Dependent packages)\n\nTotal download size: 1.2 M\nInstalled size: 6.1 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                               13 MB/s | 1.2 MB  00:00     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : python2-pyasn1-0.1.9-7.el7.noarch                            1/7 \n  Installing : python-enum34-1.0.4-1.el7.noarch                             2/7 \n  Installing : python-ply-3.4-11.el7.noarch                                 3/7 \n  Installing : python-pycparser-2.14-1.el7.noarch                           4/7 \n  Installing : python-cffi-1.6.0-5.el7.x86_64                               5/7 \n  Installing : python-idna-2.4-1.el7.noarch                                 6/7 \n  Installing : python2-cryptography-1.7.2-2.el7.x86_64                      7/7 \n  Verifying  : python-idna-2.4-1.el7.noarch                                 1/7 \n  Verifying  : python-pycparser-2.14-1.el7.noarch                           2/7 \n  Verifying  : python-ply-3.4-11.el7.noarch                                 3/7 \n  Verifying  : python-cffi-1.6.0-5.el7.x86_64                               4/7 \n  Verifying  : python-enum34-1.0.4-1.el7.noarch                             5/7 \n  Verifying  : python2-pyasn1-0.1.9-7.el7.noarch                            6/7 \n  Verifying  : python2-cryptography-1.7.2-2.el7.x86_64                      7/7 \n\nInstalled:\n  python2-cryptography.x86_64 0:1.7.2-2.el7 python2-pyasn1.noarch 0:0.1.9-7.el7\n\nDependency Installed:\n  python-cffi.x86_64 0:1.6.0-5.el7        python-enum34.noarch 0:1.0.4-1.el7   \n  python-idna.noarch 0:2.4-1.el7          python-ply.noarch 0:3.4-11.el7       \n  python-pycparser.noarch 0:2.14-1.el7   \n\nComplete!\n"
    ]
}

TASK [linux-system-roles.certificate : Ensure provider packages are installed] ***
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:22
Wednesday 03 August 2022  07:58:05 +0000 (0:00:02.374)       0:00:08.644 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "changes": {
        "installed": [
            "certmonger"
        ]
    },
    "rc": 0,
    "results": [
        "Loaded plugins: search-disabled-repos\nResolving Dependencies\n--> Running transaction check\n---> Package certmonger.x86_64 0:0.78.4-17.el7_9 will be installed\n--> Processing Dependency: psmisc for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtevent.so.0(TEVENT_0.9.9)(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtalloc.so.2(TALLOC_2.0.2)(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libxmlrpc_util.so.3()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libxmlrpc_client.so.3()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libxmlrpc.so.3()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtevent.so.0()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Processing Dependency: libtalloc.so.2()(64bit) for package: certmonger-0.78.4-17.el7_9.x86_64\n--> Running transaction check\n---> Package libtalloc.x86_64 0:2.1.16-1.el7 will be installed\n---> Package libtevent.x86_64 0:0.9.39-1.el7 will be installed\n---> Package psmisc.x86_64 0:22.20-17.el7 will be installed\n---> Package xmlrpc-c.x86_64 0:1.32.5-1905.svn2451.el7 will be installed\n---> Package xmlrpc-c-client.x86_64 0:1.32.5-1905.svn2451.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package              Arch        Version                       Repository\n                                                                           Size\n================================================================================\nInstalling:\n certmonger           x86_64      0.78.4-17.el7_9               rhel      608 k\nInstalling for dependencies:\n libtalloc            x86_64      2.1.16-1.el7                  rhel       33 k\n libtevent            x86_64      0.9.39-1.el7                  rhel       41 k\n psmisc               x86_64      22.20-17.el7                  rhel      141 k\n xmlrpc-c             x86_64      1.32.5-1905.svn2451.el7       rhel      130 k\n xmlrpc-c-client      x86_64      1.32.5-1905.svn2451.el7       rhel       32 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package (+5 Dependent packages)\n\nTotal download size: 984 k\nInstalled size: 3.7 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                              9.9 MB/s | 984 kB  00:00     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : xmlrpc-c-1.32.5-1905.svn2451.el7.x86_64                      1/6 \n  Installing : libtalloc-2.1.16-1.el7.x86_64                                2/6 \n  Installing : libtevent-0.9.39-1.el7.x86_64                                3/6 \n  Installing : xmlrpc-c-client-1.32.5-1905.svn2451.el7.x86_64               4/6 \n  Installing : psmisc-22.20-17.el7.x86_64                                   5/6 \n  Installing : certmonger-0.78.4-17.el7_9.x86_64                            6/6 \n  Verifying  : xmlrpc-c-client-1.32.5-1905.svn2451.el7.x86_64               1/6 \n  Verifying  : libtevent-0.9.39-1.el7.x86_64                                2/6 \n  Verifying  : libtalloc-2.1.16-1.el7.x86_64                                3/6 \n  Verifying  : xmlrpc-c-1.32.5-1905.svn2451.el7.x86_64                      4/6 \n  Verifying  : certmonger-0.78.4-17.el7_9.x86_64                            5/6 \n  Verifying  : psmisc-22.20-17.el7.x86_64                                   6/6 \n\nInstalled:\n  certmonger.x86_64 0:0.78.4-17.el7_9                                           \n\nDependency Installed:\n  libtalloc.x86_64 0:2.1.16-1.el7                                               \n  libtevent.x86_64 0:0.9.39-1.el7                                               \n  psmisc.x86_64 0:22.20-17.el7                                                  \n  xmlrpc-c.x86_64 0:1.32.5-1905.svn2451.el7                                     \n  xmlrpc-c-client.x86_64 0:1.32.5-1905.svn2451.el7                              \n\nComplete!\n"
    ]
}

TASK [linux-system-roles.certificate : Ensure pre-scripts hooks directory exists] ***
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:33
Wednesday 03 August 2022  07:58:07 +0000 (0:00:02.020)       0:00:10.665 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0700",
    "owner": "root",
    "path": "/etc/certmonger//pre-scripts",
    "secontext": "unconfined_u:object_r:etc_t:s0",
    "size": 6,
    "state": "directory",
    "uid": 0
}

TASK [linux-system-roles.certificate : Ensure post-scripts hooks directory exists] ***
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:59
Wednesday 03 August 2022  07:58:07 +0000 (0:00:00.355)       0:00:11.020 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0700",
    "owner": "root",
    "path": "/etc/certmonger//post-scripts",
    "secontext": "unconfined_u:object_r:etc_t:s0",
    "size": 6,
    "state": "directory",
    "uid": 0
}

TASK [linux-system-roles.certificate : Ensure provider service is running] *****
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:88
Wednesday 03 August 2022  07:58:07 +0000 (0:00:00.316)       0:00:11.336 ****** 
changed: [/cache/rhel-7.qcow2] => (item=certmonger) => {
    "__certificate_provider": "certmonger",
    "ansible_loop_var": "__certificate_provider",
    "changed": true,
    "enabled": true,
    "name": "certmonger",
    "state": "started",
    "status": {
        "ActiveEnterTimestampMonotonic": "0",
        "ActiveExitTimestampMonotonic": "0",
        "ActiveState": "inactive",
        "After": "syslog.target dbus.service network.target basic.target systemd-journald.socket system.slice",
        "AllowIsolate": "no",
        "AmbientCapabilities": "0",
        "AssertResult": "no",
        "AssertTimestampMonotonic": "0",
        "Before": "shutdown.target",
        "BlockIOAccounting": "no",
        "BlockIOWeight": "18446744073709551615",
        "BusName": "org.fedorahosted.certmonger",
        "CPUAccounting": "no",
        "CPUQuotaPerSecUSec": "infinity",
        "CPUSchedulingPolicy": "0",
        "CPUSchedulingPriority": "0",
        "CPUSchedulingResetOnFork": "no",
        "CPUShares": "18446744073709551615",
        "CanIsolate": "no",
        "CanReload": "no",
        "CanStart": "yes",
        "CanStop": "yes",
        "CapabilityBoundingSet": "18446744073709551615",
        "CollectMode": "inactive",
        "ConditionResult": "no",
        "ConditionTimestampMonotonic": "0",
        "Conflicts": "shutdown.target",
        "ControlPID": "0",
        "DefaultDependencies": "yes",
        "Delegate": "no",
        "Description": "Certificate monitoring and PKI enrollment",
        "DevicePolicy": "auto",
        "EnvironmentFile": "/etc/sysconfig/certmonger (ignore_errors=yes)",
        "ExecMainCode": "0",
        "ExecMainExitTimestampMonotonic": "0",
        "ExecMainPID": "0",
        "ExecMainStartTimestampMonotonic": "0",
        "ExecMainStatus": "0",
        "ExecStart": "{ path=/usr/sbin/certmonger ; argv[]=/usr/sbin/certmonger -S -p /var/run/certmonger.pid -n $OPTS ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }",
        "FailureAction": "none",
        "FileDescriptorStoreMax": "0",
        "FragmentPath": "/usr/lib/systemd/system/certmonger.service",
        "GuessMainPID": "yes",
        "IOScheduling": "0",
        "Id": "certmonger.service",
        "IgnoreOnIsolate": "no",
        "IgnoreOnSnapshot": "no",
        "IgnoreSIGPIPE": "yes",
        "InactiveEnterTimestampMonotonic": "0",
        "InactiveExitTimestampMonotonic": "0",
        "JobTimeoutAction": "none",
        "JobTimeoutUSec": "0",
        "KillMode": "control-group",
        "KillSignal": "15",
        "LimitAS": "18446744073709551615",
        "LimitCORE": "18446744073709551615",
        "LimitCPU": "18446744073709551615",
        "LimitDATA": "18446744073709551615",
        "LimitFSIZE": "18446744073709551615",
        "LimitLOCKS": "18446744073709551615",
        "LimitMEMLOCK": "65536",
        "LimitMSGQUEUE": "819200",
        "LimitNICE": "0",
        "LimitNOFILE": "4096",
        "LimitNPROC": "7150",
        "LimitRSS": "18446744073709551615",
        "LimitRTPRIO": "0",
        "LimitRTTIME": "18446744073709551615",
        "LimitSIGPENDING": "7150",
        "LimitSTACK": "18446744073709551615",
        "LoadState": "loaded",
        "MainPID": "0",
        "MemoryAccounting": "no",
        "MemoryCurrent": "18446744073709551615",
        "MemoryLimit": "18446744073709551615",
        "MountFlags": "0",
        "Names": "certmonger.service",
        "NeedDaemonReload": "no",
        "Nice": "0",
        "NoNewPrivileges": "no",
        "NonBlocking": "no",
        "NotifyAccess": "none",
        "OOMScoreAdjust": "0",
        "OnFailureJobMode": "replace",
        "PIDFile": "/var/run/certmonger.pid",
        "PermissionsStartOnly": "no",
        "PrivateDevices": "no",
        "PrivateNetwork": "no",
        "PrivateTmp": "no",
        "ProtectHome": "no",
        "ProtectSystem": "no",
        "RefuseManualStart": "no",
        "RefuseManualStop": "no",
        "RemainAfterExit": "no",
        "Requires": "basic.target system.slice",
        "Restart": "no",
        "RestartUSec": "100ms",
        "Result": "success",
        "RootDirectoryStartOnly": "no",
        "RuntimeDirectoryMode": "0755",
        "SameProcessGroup": "no",
        "SecureBits": "0",
        "SendSIGHUP": "no",
        "SendSIGKILL": "yes",
        "Slice": "system.slice",
        "StandardError": "inherit",
        "StandardInput": "null",
        "StandardOutput": "journal",
        "StartLimitAction": "none",
        "StartLimitBurst": "5",
        "StartLimitInterval": "10000000",
        "StartupBlockIOWeight": "18446744073709551615",
        "StartupCPUShares": "18446744073709551615",
        "StatusErrno": "0",
        "StopWhenUnneeded": "no",
        "SubState": "dead",
        "SyslogLevelPrefix": "yes",
        "SyslogPriority": "30",
        "SystemCallErrorNumber": "0",
        "TTYReset": "no",
        "TTYVHangup": "no",
        "TTYVTDisallocate": "no",
        "TasksAccounting": "no",
        "TasksCurrent": "18446744073709551615",
        "TasksMax": "18446744073709551615",
        "TimeoutStartUSec": "1min 30s",
        "TimeoutStopUSec": "1min 30s",
        "TimerSlackNSec": "50000",
        "Transient": "no",
        "Type": "dbus",
        "UMask": "0022",
        "UnitFilePreset": "disabled",
        "UnitFileState": "disabled",
        "WatchdogTimestampMonotonic": "0",
        "WatchdogUSec": "0"
    }
}

TASK [linux-system-roles.certificate : Ensure certificate requests] ************
task path: /tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:100
Wednesday 03 August 2022  07:58:08 +0000 (0:00:00.518)       0:00:11.855 ****** 
changed: [/cache/rhel-7.qcow2] => (item={'name': 'monger-cockpit', 'dns': ['localhost', 'www.example.com'], 'ca': 'local', 'group': 'cockpit-ws', 'run_after': 'DEST=/etc/cockpit/ws-certs.d/monger-cockpit.cert\ncat /etc/pki/tls/certs/monger-cockpit.crt \\\n/etc/pki/tls/private/monger-cockpit.key > $DEST\nchmod 640 $DEST\nchown root:cockpit-ws $DEST\n'}) => {
    "ansible_loop_var": "item",
    "changed": true,
    "item": {
        "ca": "local",
        "dns": [
            "localhost",
            "www.example.com"
        ],
        "group": "cockpit-ws",
        "name": "monger-cockpit",
        "run_after": "DEST=/etc/cockpit/ws-certs.d/monger-cockpit.cert\ncat /etc/pki/tls/certs/monger-cockpit.crt \\\n/etc/pki/tls/private/monger-cockpit.key > $DEST\nchmod 640 $DEST\nchown root:cockpit-ws $DEST\n"
    }
}

MSG:

Certificate requested (new). Pre/Post run hooks updated. File attributes updated.
META: role_complete for /cache/rhel-7.qcow2

TASK [Get PEM of certmonger's local CA] ****************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:62
Wednesday 03 August 2022  07:58:09 +0000 (0:00:00.851)       0:00:12.706 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "cmd": [
        "openssl",
        "pkcs12",
        "-in",
        "/var/lib/certmonger/local/creds",
        "-out",
        "/var/lib/certmonger/local/ca.pem",
        "-nokeys",
        "-nodes",
        "-passin",
        "pass:"
    ],
    "delta": "0:00:00.009537",
    "end": "2022-08-03 03:58:09.695051",
    "rc": 0,
    "start": "2022-08-03 03:58:09.685514"
}

STDERR:

MAC verified OK

TASK [test - cockpit works with TLS and expected certificate] ******************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:69
Wednesday 03 August 2022  07:58:09 +0000 (0:00:00.305)       0:00:13.012 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "curl",
        "--cacert",
        "/var/lib/certmonger/local/ca.pem",
        "https://localhost:9090"
    ],
    "delta": "0:00:00.226384",
    "end": "2022-08-03 03:58:10.197609",
    "rc": 0,
    "start": "2022-08-03 03:58:09.971225"
}

STDOUT:

<!DOCTYPE html>
<html>
  <head>
    <title>Loading...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="robots" content="noindex">
    <meta insert_dynamic_content_here><script>
(function (root, data) {
    window.cockpit_po = data;
/* The syntax of this line is important for po2json */
}(this, {"":{"language":"en"}}));
</script>
<base href="/">
    <script>
var environment = {"page":{"connect":false,"require_host":false},"hostname":"ibm-p8-kvm-03-guest-02.virt.pnr.lab.eng.rdu2.redhat.com","os-release":{"NAME":"Red Hat Enterprise Linux Server","ID":"rhel","PRETTY_NAME":"Red Hat Enterprise Linux Server 7.9 (Maipo)","VARIANT":"Server","VARIANT_ID":"server","CPE_NAME":"cpe:/o:redhat:enterprise_linux:7.9:GA:server","ID_LIKE":"fedora"}};
    </script>
    <script>
/* global XMLHttpRequest */
(function(a) {
    var r;
    /* Some browsers fail localStorage access due to corruption, preventing Cockpit login */    try {
        r = window.localStorage;
        window.localStorage.removeItem("url-root");
    } catch (e) {
        r = window.sessionStorage;
        a.warn(String(e));
    }
    var s;
    var l = window.environment || {};
    var u = l.OAuth || null;
    if (u) {
        if (!u.TokenParam) u.TokenParam = "access_token";
        if (!u.ErrorParam) u.ErrorParam = "error_description";
    }
    var t = /\$\{([^}]+)\}|\$([a-zA-Z0-9_]+)/g;
    function c(e /* ... */) {
        var o = Array.prototype.slice.call(arguments, 1);
        return e.replace(t, function(e, t, n) {
            return o[t || n] || "";
        });
    }
    function n(e) {
        if (window.cockpit_po) {
            var t = window.cockpit_po[e];
            if (t && t[1]) return t[1];
        }
        return e;
    }
    function i() {
        if (!document.querySelectorAll) return;
        var e = document.querySelectorAll("[translate]");
        for (var t = 0; t < e.length; t++) e[t].textContent = n(e[t].textContent);
    }
    var d = n;
    var f, p, w, v;
    var o = /[?&]?([^=]+)=([^&]*)/g;
    var g = null;
    function y(e) {
        e = e.split("+").join(" ");
        var t = {};
        var n;
        for (;;) {
            n = o.exec(e);
            if (!n) break;
            t[decodeURIComponent(n[1])] = decodeURIComponent(n[2]);
        }
        return t;
    }
    if (!a) a = function() {};
    function m(e) {
        return document.getElementById(e);
    }
    function h(e) {
        if (window.console) a.warn("fatal:", e);
        m("login-again").style.display = "none";
        m("login-wait-validating").style.display = "none";
        if (g) {
            m("login-again").href = g;
            m("login-again").style.display = "block";
        }
        m("login").style.display = "none";
        m("login-details").style.display = "none";
        m("login-fatal").style.display = "block";
        var t = m("login-fatal-message");
        t.textContent = "";
        t.appendChild(document.createTextNode(e));
    }
    function b(e, t) {
        var n;
        var o = m(e);
        if (o && window.getComputedStyle) n = window.getComputedStyle(o, ":before");
        if (!n) return;
        var i;
        var r = n.content;
        if (r && r != "none" && r != "normal") {
            i = r.length;
            if ((r[0] === '"' || r[0] === "'") && i > 2 && r[i - 1] === r[0]) r = r.substr(1, i - 2);
            o.innerHTML = r || t;
        } else {
            o.removeAttribute("class");
        }
    }
    function k() {
        function o(e) {
            if (window.console) a.warn(c(d("This web browser is too old to run Cockpit (missing $0)"), e));
            m("login").style.display = "none";
            m("login-details").style.display = "none";
            m("unsupported-browser").style.display = "block";
            document.body.className += " brand-unsupported-browser";
        }
        function e(t, e) {
            var n;
            try {
                n = e[t];
            } catch (e) {
                h(c(d("The web browser configuration prevents Cockpit from running (inaccessible $0)"), t));
                throw e;
            }
            if (n === undefined) {
                o();
                return false;
            }
            return true;
        }
        function t() {
            /*
             * Be certain to use parenthesis when checking CSS strings
             * as Edge is oddly particular.
             *
             * Instead of "display: inline", use:
             * "(display: inline)"
             *        or
             * "display", "inline"
             */
            var e = [].join.call(arguments, ": ");
            if (!window.CSS.supports.apply(this, arguments)) {
                h(c(d("The web browser configuration prevents Cockpit from running (inaccessible $0)"), e));
                o(e);
                return false;
            }
            return true;
        }
        return ("MozWebSocket" in window || e("WebSocket", window)) && e("XMLHttpRequest", window) && e("sessionStorage", window) && e("JSON", window) && e("defineProperty", Object) && e("console", window) && e("pushState", window.history) && e("textContent", document) && e("CSS", window) && e("supports", window.CSS) && t("display", "flex") && t("display", "grid");
    }
    function x(e) {
        return e.replace(/^\s+|\s+$/g, "");
    }
    /* Sets values for application, url_root and login_path */    function S(e) {
        var t = document.createElement("a");
        var n = document.baseURI;
        var o;
        /* Some IEs don't support baseURI */        if (!n) {
            o = document.getElementsByTagName("base");
            if (o.length > 0) n = o[0].href; else n = "/";
        }
        e = e || "/";
        t.href = n;
        if (t.pathname != "/") {
            s = t.pathname.replace(/^\/+|\/+$/g, "");
            r.setItem("url-root", s);
            if (s && e.indexOf("/" + s) === 0) e = e.replace("/" + s, "") || "/";
        }
        if (e.indexOf("/=") === 0) {
            l.hostname = e.substring(2);
            e = "/cockpit+" + e.split("/")[1];
        } else if (e.indexOf("/cockpit/") !== 0 && e.indexOf("/cockpit+") !== 0) {
            e = "/cockpit";
        }
        p = e.split("/")[1];
        f = "/" + p + "/login";
        if (s) f = "/" + s + f;
        v = p;
        w = f;
    }
    function T(e, t) {
        // On keypress, only accept spacebar (enter acts as a click)
        if (e && e.type === "keypress" && e.key !== " ") return;
        // Stop the <a>'s click handler, otherwise it causes a page reload
                if (e && e.type === "click") e.preventDefault();
        if (t === undefined) t = m("server-group").style.display === "none";
        m("option-group").setAttribute("data-state", t);
        if (t) {
            m("server-group").style.display = "block";
            m("option-caret").setAttribute("class", "caret caret-down");
            m("option-caret").setAttribute("className", "caret caret-down");
        } else {
            m("server-group").style.display = "none";
            m("option-caret").setAttribute("class", "caret caret-right");
            m("option-caret").setAttribute("className", "caret caret-right");
        }
    }
    function e() {
        window.onload = null;
        i();
        S(window.location.pathname);
        /* Determine if we are nested or not, and switch styles */        if (window.location.pathname.indexOf("/" + s + "/cockpit/") === 0 || window.location.pathname.indexOf("/" + s + "/cockpit+") === 0) document.documentElement.setAttribute("class", "inline");
        // Setup title
                var e = l.page.title;
        if (!e || p.indexOf("cockpit+=") === 0) e = l.hostname;
        document.title = e;
        if (p.indexOf("cockpit+=") === 0) {
            m("brand").style.display = "none";
            m("badge").style.visibility = "hidden";
        } else {
            b("badge", "");
            b("brand", "Cockpit");
        }
        if (!k()) return;
        m("show-other-login-options").addEventListener("click", T);
        m("show-other-login-options").addEventListener("keypress", T);
        m("server-clear").addEventListener("click", function() {
            var e = m("server-field");
            e.value = "";
            e.focus();
        });
        /* Setup the user's last choice about the authorized button */        var t = r.getItem("authorized-default") || "";
        if (t.indexOf("password") !== -1) m("authorized-input").checked = true;
        var n = l["os-release"];
        if (n) r.setItem("os-release", JSON.stringify(n));
        var o = window.sessionStorage.getItem("logout-intent") == "explicit";
        if (o) window.sessionStorage.removeItem("logout-intent");
        /* Try automatic/kerberos authentication? */        if (u) {
            m("login-details").style.display = "none";
            m("login").style.display = "none";
            if (o) {
                O();
                m("login-again").textContent = d("Login Again");
                h(d("Logout Successful"));
            } else {
                I();
            }
        } else if (o) {
            z();
        } else {
            C();
        }
    }
    function C() {
        var e = new XMLHttpRequest();
        e.open("GET", f, true);
        e.onreadystatechange = function() {
            if (e.readyState == 4) {
                if (e.status == 200) {
                    j(JSON.parse(e.responseText));
                } else if (e.status == 401) {
                    z();
                } else if (e.statusText) {
                    h(decodeURIComponent(e.statusText));
                } else if (e.status === 0) {
                    z();
                } else {
                    h(c(d("$0 error"), e.status));
                }
            }
        };
        e.send();
    }
    function O() {
        var e = window.location.href.split("#", 2);
        g = u.URL;
        if (u.URL.indexOf("?") > -1) g += "&"; else g += "?";
        g += "redirect_uri=" + encodeURIComponent(e[0]);
    }
    function I() {
        var e = document.createElement("a");
        if (!u.URL) return h(d("Cockpit authentication is configured incorrectly."));
        var t = y(window.location.search);
        if (!window.location.search && window.location.hash) t = y(window.location.hash.slice(1));
        /* Not all providers allow hashes in redirect urls */        var n, o, i;
        O();
        if (t[u.TokenParam]) {
            if (window.sessionStorage.getItem("login-wanted")) {
                e.href = window.sessionStorage.getItem("login-wanted");
                S(e.pathname);
            }
            n = t[u.TokenParam];
            m("login-wait-validating").style.display = "block";
            i = new XMLHttpRequest();
            i.open("GET", f, true);
            i.setRequestHeader("Authorization", "Bearer " + n);
            i.onreadystatechange = function() {
                if (i.readyState == 4) {
                    if (i.status == 200) {
                        j(JSON.parse(i.responseText));
                    } else {
                        o = $(i.getResponseHeader("WWW-Authenticate"), i.responseText);
                        if (o) P(o); else h(decodeURIComponent(i.statusText));
                    }
                }
            };
            i.send();
        } else if (t[u.ErrorParam]) {
            h(t[u.ErrorParam]);
        } else {
            /* Store url we originally wanted in case we
             * had to strip a hash or query params
             */
            window.sessionStorage.setItem("login-wanted", window.location.href);
            window.location = g;
        }
    }
    function E() {
        m("error-group").style.display = "none";
        m("login-error-message").textContent = "";
    }
    function L(e, t) {
        E();
        if (e) {
            /* OAuth failures are always fatal */
            if (u) {
                h(e);
            } else {
                N(t);
                m("login-error-message").textContent = e;
                m("error-group").style.display = "block";
            }
        }
    }
    function A(e) {
        var t = m("server-field").value;
        if (!t) {
            L(e, false);
        } else {
            E();
            m("login-error-message").textContent = e;
            m("error-group").style.display = "block";
            T(null, true);
            N();
        }
    }
    function R(e) {
        var t = m("login-note");
        if (e) {
            t.style.display = "block";
            t.textContent = e;
        } else {
            t.innerHTML = "&nbsp;";
        }
    }
    function H() {
        return l.page.require_host && v.indexOf("cockpit+=") === -1;
    }
    function U() {
        L(null);
        var e;
        var t = x(m("login-user-input").value);
        if (t === "") {
            L(d("User name cannot be empty"));
        } else if (H() && m("server-field").value === "") {
            L(d("Please specify the host to connect to"));
        } else {
            e = m("server-field").value;
            if (e) {
                p = "cockpit+=" + e;
                f = w.replace("/" + v + "/", "/" + p + "/");
            } else {
                p = v;
                f = w;
            }
            m("server-name").textContent = e || l.hostname;
            m("login-button").removeEventListener("click", U);
            /* When checked we tell the server to keep authentication */            var n = m("authorized-input").checked ? "password" : "";
            var o = m("login-password-input").value;
            r.setItem("authorized-default", n);
            var i = {
                Authorization: "Basic " + window.btoa(q(t + ":" + o)),
                "X-Authorize": n
            };
            // allow unknown remote hosts with interactive logins with "Connect to:"
                        if (e) i["X-SSH-Connect-Unknown-Hosts"] = "yes";
            J("GET", i, false);
        }
    }
    function N(e) {
        var t = l.page.connect;
        var n = m("option-group").getAttribute("data-state");
        m("login-wait-validating").style.display = "none";
        m("login").style.visibility = "visible";
        m("login").style.display = "block";
        m("user-group").style.display = e ? "none" : "block";
        m("password-group").style.display = e ? "none" : "block";
        m("conversation-group").style.display = e ? "block" : "none";
        m("login-button-text").textContent = d("Log In");
        m("login-password-input").value = "";
        if (H()) {
            m("option-group").style.display = "none";
            n = true;
        } else {
            m("option-group").style.display = !t || e ? "none" : "block";
        }
        if (!t || e) {
            m("server-group").style.display = "none";
        } else {
            m("server-group").style.display = n ? "block" : "none";
        }
        m("login-button").removeAttribute("disabled");
        if (!e) m("login-button").addEventListener("click", U);
    }
    function z() {
        /* Show the login screen */
        m("server-name").textContent = document.title;
        R(d("Log in with your server user account."));
        m("login-user-input").addEventListener("keydown", function(e) {
            L(null);
            if (e.which == 13) m("login-password-input").focus();
        }, false);
        var e = function(e) {
            L(null);
            if (e.which == 13) U();
        };
        m("login-password-input").addEventListener("keydown", e);
        m("authorized-input").addEventListener("keydown", e);
        N();
        m("login-user-input").focus();
    }
    function P(e) {
        var t = e.echo ? "text" : "password";
        m("conversation-prompt").textContent = e.prompt;
        var n = m("conversation-message");
        var o = e.error || e.message;
        if (o) {
            n.textContent = o;
            n.style.display = "block";
        } else {
            n.style.display = "none";
        }
        var i = m("conversation-input");
        i.value = "";
        if (e["default"]) i.value = e["default"];
        i.setAttribute("type", t);
        i.focus();
        L("");
        function r() {
            m("conversation-input").removeEventListener("keydown", s);
            m("login-button").removeEventListener("click", r);
            L(null, true);
            W(e.id, m("conversation-input").value);
        }
        function s(e) {
            L(null, true);
            if (e.which == 13) {
                r();
            }
        }
        m("conversation-input").addEventListener("keydown", s);
        m("login-button").addEventListener("click", r);
        N(true);
    }
    function q(e) {
        return window.unescape(encodeURIComponent(e));
    }
    function $(e, t) {
        var n;
        var o;
        var i;
        var r;
        if (!e) return null;
        n = e.split(" ");
        if (n[0].toLowerCase() !== "x-conversation" && n.length != 3) return null;
        r = n[1];
        try {
            o = window.atob(n[2]);
        } catch (e) {
            if (window.console) a.error("Invalid prompt data", e);
            return null;
        }
        try {
            i = JSON.parse(t);
        } catch (e) {
            if (window.console) a.log("Got invalid JSON response for prompt data", e);
            i = {};
        }
        i.id = r;
        i.prompt = o;
        return i;
    }
    function J(e, t, n) {
        m("login-button").setAttribute("disabled", "true");
        var o = new XMLHttpRequest();
        o.open("GET", f, true);
        var i;
        var r;
        var s;
        for (s in t) o.setRequestHeader(s, t[s]);
        o.onreadystatechange = function() {
            if (o.readyState != 4) {
                return;
            } else if (o.status == 200) {
                var e = JSON.parse(o.responseText);
                j(e);
            } else if (o.status == 401) {
                r = o.getResponseHeader("WWW-Authenticate");
                if (r && r.toLowerCase().indexOf("x-conversation") === 0) {
                    i = $(r, o.responseText);
                    if (i) P(i); else h(d("Internal Error: Invalid challenge header"));
                } else {
                    if (window.console) a.log(o.statusText);
                    if (o.statusText.indexOf("authentication-not-supported") > -1) {
                        var t = x(m("login-user-input").value);
                        h(c(d("The server refused to authenticate '$0' using password authentication, and no other supported authentication methods are available."), t));
                    } else if (o.statusText.indexOf("terminated") > -1) {
                        L(d("Authentication Failed: Server closed connection"));
                    } else if (o.statusText.indexOf("no-host") > -1) {
                        A(d("Unable to connect to that address"));
                    } else if (o.statusText.indexOf("unknown-hostkey") > -1) {
                        A(d("Refusing to connect. Hostkey is unknown"));
                    } else if (o.statusText.indexOf("unknown-host") > -1) {
                        A(d("Refusing to connect. Host is unknown"));
                    } else if (o.statusText.indexOf("invalid-hostkey") > -1) {
                        A(d("Refusing to connect. Hostkey does not match"));
                    } else if (n) {
                        L(d("Authentication failed"));
                    } else {
                        L(d("Wrong user name or password"));
                    }
                }
            } else if (o.status == 403) {
                L(decodeURIComponent(o.statusText) || d("Permission denied"));
            } else if (o.statusText) {
                h(decodeURIComponent(o.statusText));
            } else {
                h(c(d("$0 error"), o.status));
            }
            m("login-button").removeAttribute("disabled");
        };
        o.send();
    }
    function W(e, t) {
        var n = {
            Authorization: "X-Conversation " + e + " " + window.btoa(q(t))
        };
        J("GET", n, true);
    }
    function M(e) {
        // Force a reload if not triggered below
        // because only the hash part of the url
        // changed
        var t = window.setTimeout(function() {
            t = null;
            window.location.reload(true);
        }, 100);
        if (e && e != window.location.href) window.location = e;
        // cancel forced reload if we are reloading
                window.onbeforeunload = function() {
            if (t) window.clearTimeout(t);
            t = null;
        };
    }
    function X(n) {
        var e = "/" + p + "/@localhost/";
        if (s) e = "/" + s + e;
        var o = e + "shell/index.html";
        var i = new XMLHttpRequest();
        i.open("GET", e + "manifests.json", true);
        i.onreadystatechange = function() {
            if (i.readyState == 4) {
                if (i.status == 200) {
                    var e = JSON.parse(i.responseText);
                    var t = e ? e["base1"] : {};
                    if (!t["version"] || t["version"] < "119.x") {
                        M(o);
                    } else M(n);
                } else {
                    M(o);
                }
            }
        };
        i.send();
    }
    function G(e, t, n) {
        var o = 0;
        while (o < e.length) {
            var i = e.key(o);
            if (n && i.indexOf("cockpit") !== 0) e.removeItem(i); else if (i.indexOf(t) === 0) e.removeItem(i); else o++;
        }
    }
    function _(e) {
        /* Clear anything not prefixed with
         * different application from sessionStorage
         */
        G(window.sessionStorage, p, true);
        /* Clear anything prefixed with our application
         * and login-data, but not other non-application values.
         */        r.removeItem("login-data");
        G(r, p, false);
        var t;
        if (e && e["login-data"]) {
            t = JSON.stringify(e["login-data"]);
            /* login-data is tied to the auth cookie, since
             * cookies are available after the page
             * session ends login-data should be too.
             */            r.setItem(p + "login-data", t);
            /* Backwards compatbility for packages that aren't application prefixed */            r.setItem("login-data", t);
        }
        /* URL Root is set by cockpit ws and shouldn't be prefixed
         * by application
         */        if (s) r.setItem("url-root", s);
    }
    function j(e) {
        var t = window.sessionStorage.getItem("login-wanted");
        var n = m("server-field").value;
        if (n && p != v) {
            t = "/=" + n;
            if (s) t = "/" + s + t;
        }
        /* clean up sessionStorage. clear anything that isn't prefixed
         * with an application and anything prefixed with our application.
         */        G(window.sessionStorage, p, false);
        _(e);
        /* Make sure that the base1 version is new enough to handle
         * urls that reference machines.
         */        if (p.indexOf("cockpit+=") === 0) {
            X(t);
        } else {
            M(t);
        }
    }
    window.onload = e;
})(window.console);
//# sourceMappingURL=login.min.js.map    </script>
    <style>
#option-group,.btn,.cross,button{cursor:pointer}
.btn,label{font-weight:600}
.btn,img{vertical-align:middle}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:62.5%;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.66666667;background-color:#fff}
a{background:0 0;color:#0099d3;text-decoration:none}
.btn,.btn:active{background-image:none}
a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}
a:active,a:hover{outline:0}
a:focus,a:hover{color:#00618a;text-decoration:underline}
img{border:0}
button,input,select,textarea{font-family:inherit;margin:0;font-size:inherit;line-height:inherit}
button,input{line-height:normal}
.btn,.form-control{line-height:1.66666667}
button,select{text-transform:none}
button{-webkit-appearance:button;overflow:visible}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
p{margin:0 0 10px}
.container{margin-right:auto;margin-left:auto;padding-left:20px;padding-right:20px}
.form-group,.row{margin-right:-20px}
.container:after,.container:before,.row:after,.row:before{content:" ";display:table}
.container:after,.row:after{clear:both}
@media (min-width:768px){.container{width:760px}
}
@media (min-width:992px){.container{width:980px}
}
@media (min-width:1200px){.container{width:1180px}
}
.row{margin-left:-20px}
.col-lg-5,.col-lg-7,.col-md-10,.col-md-2,.col-md-6,.col-sm-1,.col-sm-10,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-5,.col-sm-6,.col-sm-7,.col-xs-12{position:relative;min-height:1px;padding-left:20px;padding-right:20px}
.col-xs-12{float:left;width:100%}
@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-5,.col-sm-6,.col-sm-7{float:left}
.col-sm-12{width:100%}
.col-sm-10{width:83.33333333333334%}
.col-sm-7{width:58.333333333333336%}
.col-sm-6{width:50%}
.col-sm-5{width:41.66666666666667%}
.col-sm-3{width:25%}
.col-sm-2{width:16.666666666666664%}
.col-sm-1{width:8.333333333333332%}
.col-sm-offset-2{margin-left:16.666666666666664%}
.control-label{text-align:right}
}
@media (min-width:992px){.col-md-10,.col-md-2,.col-md-6{float:left}
.col-md-10{width:83.33333333333334%}
.col-md-6{width:50%}
.col-md-2{width:16.666666666666664%}
}
@media (min-width:1200px){.col-lg-5,.col-lg-7{float:left}
.col-lg-7{width:58.333333333333336%}
.col-lg-5{width:41.66666666666667%}
}
label{display:inline-block;margin-bottom:5px}
.form-control{height:26px;color:#333}
.form-control[type=text],.form-control[type=password]{display:block;width:100%;padding:2px 6px;font-size:12px;background-color:#fff;background-image:none;border:1px solid #bababa;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}
.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}
.form-control:-moz-placeholder{color:#999;font-style:italic}
.form-control::-moz-placeholder{color:#999;font-style:italic;opacity:1}
.form-control:-ms-input-placeholder{color:#999;font-style:italic}
.form-control::-webkit-input-placeholder{color:#999;font-style:italic}
.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}
.control-label{margin-top:0;margin-bottom:0;padding-top:3px}
.form-group{margin-left:-20px}
.form-group:after{clear:both;margin-bottom:15px}
.form-group:after,.form-group:before{content:" ";display:table}
.btn{display:inline-block;margin-bottom:0;text-align:center;border:1px solid transparent;white-space:nowrap;padding:2px 6px;font-size:12px;border-radius:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-box-shadow:0 2px 3px rgba(0,0,0,.1);box-shadow:0 2px 3px rgba(0,0,0,.1)}
.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}
.btn:focus,.btn:hover{color:#4d5258;text-decoration:none}
.alert-danger,.btn-primary,.login-pf .container .help-block,body{color:#fff}
.btn:active{outline:0;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}
.btn-lg{padding:6px 10px;font-size:14px;line-height:1.33;border-radius:1px}
@-ms-viewport{width:device-width}
.btn-primary{background-color:#189ad1;background-image:-webkit-linear-gradient(top,#1cace8 0,#1998cc 100%);background-image:linear-gradient(to bottom,#1cace8 0,#1998cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1cace8', endColorstr='#ff1998cc', GradientType=0);border-color:#267da1}
.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background-color:#189ad1;background-image:none;border-color:#267da1;color:#fff}
.btn-primary:active{background-image:none}
@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url(cockpit/static/fonts/OpenSans-Regular-webfont.woff) format('woff')}
@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:url(cockpit/static/fonts/OpenSans-Bold-webfont.woff) format('woff')}
.form-control:hover{border-color:#7BB2DD}
.login-pf{height:100%}
.login-pf #brand{position:relative;top:-70px}
.login-pf #brand img{display:block;margin:0 auto;max-width:100%}
@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}
}
.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}
.login-pf .container{background-color:#181818;background-color:rgba(255,255,255,.055);clear:right;padding-bottom:40px;padding-top:20px;width:auto}
@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}
.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}
}
.login-pf .container .details p:first-child{border-top:1px solid #474747;padding-top:25px;margin-top:25px}
@media (min-width:768px){.login-pf .container .login-area{border-right:1px solid #474747}
.login-pf .container .details{padding-left:40px}
.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}
}
.login-pf .container .details p{margin-bottom:2px}
.login-pf .container .control-label{font-size:13px;font-weight:400;text-align:left}
.login-pf .container .form-group:last-child,.login-pf .container .form-group:last-child .help-block:last-child{margin-bottom:0}
@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}
to{-webkit-transform:rotate(359deg)}
}
@keyframes rotation{from{transform:rotate(0)}
to{transform:rotate(359deg)}
}
.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(0,0,0,.25);border-left:4px solid rgba(0,0,0,.25);border-right:4px solid rgba(0,0,0,.25);border-radius:100%;border-top:4px solid rgba(0,0,0,.75);height:24px;margin:4px 0 0;position:relative;width:24px}
.alert{padding:7px 11px;margin-bottom:20px;border:2px solid transparent;border-radius:1px}
.alert-danger{background:0 0;border-color:#c00;font-weight:700}
#option-group{margin-left:-20px;margin-right:-20px}
#option-group a{color:inherit}
#server-group:before{clear:both;margin-top:5px}
.login-fatal{font-size:130%}
.unsupported-browser ul{color:#aaa;display:inline-block;margin:0 auto;text-align:left}
.unsupported-browser a{color:#fff;font-weight:700;text-decoration:underline}
.cross,.inline .container .help-block{color:#000}
.login-browser-recommendations{margin-top:6rem}
@media screen and (max-width:480px){.unsupported-browser .container>.row>.col-sm-12{position:static}
}
@media screen and (min-width:481px){.brand-unsupported-browser #brand{margin-left:-40px;position:absolute;text-align:center;width:100%}
.unsupported-browser{font-size:140%;margin-left:-30px;text-align:center}
.unsupported-browser-heading{font-size:3rem;left:50%;margin:0 0 0 -32rem;position:absolute;text-align:center;top:-16rem;width:64rem}
.login-browser-recommendations h3{font-weight:400;margin-top:0}
}
.caret,.server-box{position:relative}
#login-wait-validating div{float:left}
.conversation-prompt{white-space:normal;word-wrap:break-word}
.control-label{white-space:nowrap;font-size:13px}
.spinner{border-color:rgba(255,255,255,.75) rgba(255,255,255,.25) rgba(255,255,255,.25)}
.inline #badge,.inline #brand,.inline #login-details{display:none}
.inline body{background:0 0!important;color:#000}
@media (min-width:768px){.login-button-container{float:right}
}
.caret{display:inline-block;top:4px}
.caret-down{transform:rotate(90deg);-moz-transform:rotate(90deg);-webkit-transform:rotate(90deg);transform-origin:8px 8px;-moz-transform-origin:8px 8px;-webkit-transform-origin:8px 8px}
.cross{position:absolute;right:25px;top:2px;font-weight:700;font-size:14px;opacity:.7}
#option-group:hover svg,.cross:hover{opacity:1}
#option-group div{margin-left:-3px;margin-top:3px;margin-bottom:10px}
#option-group svg{opacity:.7}
#authorized-input{width:13px;height:13px;padding:0;vertical-align:bottom;margin:8px 5px 3px 0}
#login-button{padding:7px}
#login-button .spinner{display:none}
#login-button[disabled]{padding:0;background-color:#333;background-image:none;border-color:#555}
#login-button[disabled] .spinner{display:inline-block}
#login-button[disabled] #login-button-text,.hide-before:before{display:none}
@media (max-width:480px){.login-pf{display:flex;flex-direction:column-reverse;height:auto;position:relative}
.row{display:flex;flex-direction:column}
.login-pf .container{width:100%}
.login-pf #badge{max-width:33vw;margin:3rem auto;height:8rem;padding:0;background-position:50% 100%}
.container>.row>.col-sm-12{order:1;position:absolute;bottom:0;left:0;width:100%;text-align:center}
.login-pf #brand{position:static;font-size:inherit;background-position:50% 50%}
.details{text-align:center}
}
/*# sourceMappingURL=login.min.css.map */    </style>
    <link href="cockpit/static/branding.css" type="text/css" rel="stylesheet">
  </head>
  <body class="login-pf">
    <span id="badge">
    </span>
    <div class="container">
      <div class="row">
        <div class="col-sm-12">
          <div id="brand" class="hide-before">
          </div><!--/#brand-->
        </div><!--/.col-*-->

        <div id="login" class="col-sm-7 col-md-6 col-lg-5 login-area" style="visibility: hidden;">
          <div role="form">

            <div id="error-group" class="alert alert-danger" hidden>
              <span id="login-error-message"></span>
            </div>

            <div id="conversation-group" class="form-group" hidden>
              <div class="col-sm-12 col-md-12">
                <div id="conversation-message"></div>
                <label id="conversation-prompt" for="conversation-input"></label>
              </div>
              <div class="col-sm-12 col-md-12">
                <input type="password" class="form-control" id="conversation-input">
              </div>
            </div>

            <div id="user-group" class="form-group">
              <label for="login-user-input" class="col-sm-2 col-md-2 control-label" translate>User name</label>
              <div class="col-sm-10 col-md-10">
                <input type="text" class="form-control" id="login-user-input" autocorrect="off" autocapitalize="none" autofocus>
              </div>
            </div>

            <div id="password-group" class="form-group">
              <label for="login-password-input" class="col-sm-2 col-md-2 control-label" translate>Password</label>
              <div class="col-sm-10 col-md-10">
                <input type="password" class="form-control" id="login-password-input">
              </div>
              <div class="col-sm-2 col-md-2"></div>
              <div class="col-sm-10 col-md-10">
                <input type="checkbox" class="form-control" id="authorized-input">
                <label for="authorized-input" class="control-label" translate>Reuse my password for privileged tasks</label>
              </div>
            </div>

            <div id="option-group">
              <div class="col-sm-5 col-md-5">
                <i id="option-caret" class="caret caret-right" aria-hidden="true">
                    <svg height="16" width="16" viewBox="0 0 16 16">
                        <polygon fill="#ffffff" points="4,0 4,14 12,7">
                        </polygon>
                    </svg>
                </i>
                <a href="#" id="show-other-login-options" translate>Other Options</a>
              </div>
            </div>

            <div id="server-group" class="form-group" hidden>
              <label title="Log in to another system. Leave blank to log in to the local system." for="server-field" class="col-sm-2 col-md-2 control-label" translate>Connect to</label>
              <div class="col-sm-10 col-md-10 server-box">
                <input type="text" class="form-control" id="server-field">
                <span class="cross" id="server-clear" aria-hidden="true">&#x274c;</span>
              </div>
            </div>

            <div class="form-group">
              <div class="col-md-3 col-sm-3 login-button-container">
                <button class="btn btn-primary btn-lg col-xs-12" id="login-button">
                  <span class="spinner"></span>
                  <span id="login-button-text" translate>Log In</span>
                </button>
              </div>
            </div>
          </div>
        </div><!--/.col-*-->

        <div class="col-sm-5 col-md-6 col-lg-7 details" id="login-details">
          <p>
            <label class="control-label"><span translate>Server</span>: <b id="server-name"></b></label>
          </p>
          <p id="login-note" class="login-note"></p>
        </div><!--/.col-*-->

        <div class="col-sm-5 col-md-6 col-lg-7" id="login-wait-validating" hidden>
          <div class="col-sm-4">
            <span class="help-block" translate>Validating authentication token</span>
          </div>
          <div class="col-sm-1">
            <div class="spinner col-xs-15">
            </div>
          </div>
        </div>

        <div class="col-sm-12" id="login-fatal" hidden>
          <span id="login-fatal-message"></span>
          <a id="login-again" translate hidden>Try Again</a>
        </div>

        <div class="unsupported-browser col-sm-12" id="unsupported-browser" hidden>
          <h2 classname="unsupported-browser-heading" translate>A modern browser is required for security, reliability, and performance.</h2>
          <div class="login-browser-recommendations">
            <div class="col-sm-6">
              <h3 translate>Download a new browser for free</h3>
              <ul>
                <li><a href="https://firefox.com/">Mozilla Firefox</a> / Linux, Windows, macOS</li>
                <li><a href="https://google.com/chrome">Google Chrome</a> / Linux, Windows, macOS</li>
              </ul>
            </div>
            <div class="col-sm-6">
              <h3 translate>Or use a bundled browser</h3>
              <ul>
                <li><a href="https://microsoftedge.com/">Microsoft Edge</a> / Windows 10+</li>
                <li><a href="https://apple.com/safari/">Apple Safari</a> / macOS</li>
              </ul>
            </div>
          </div>
        </div>

      </div><!--/.row-->
    </div><!--/.container-->
  </body>
</html>


STDERR:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 39147    0 39147    0     0   176k      0 --:--:-- --:--:-- --:--:--  176k

TASK [test - get certmonger tracking status] ***********************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:76
Wednesday 03 August 2022  07:58:10 +0000 (0:00:00.516)       0:00:13.529 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "getcert",
        "list",
        "--tracking-only",
        "-f",
        "/etc/pki/tls/certs/monger-cockpit.crt"
    ],
    "delta": "0:00:00.045337",
    "end": "2022-08-03 03:58:10.557845",
    "rc": 0,
    "start": "2022-08-03 03:58:10.512508"
}

STDOUT:

Number of certificates and requests being tracked: 1.
Request ID '20220803075809':
	status: MONITORING
	stuck: no
	key pair storage: type=FILE,location='/etc/pki/tls/private/monger-cockpit.key'
	certificate: type=FILE,location='/etc/pki/tls/certs/monger-cockpit.crt'
	CA: local
	issuer: CN=72a29b3b-21704590-a39faf2a-c46f55cd,CN=Local Signing Authority
	subject: CN=localhost
	expires: 2023-08-03 07:58:08 UTC
	dns: localhost,www.example.com
	key usage: digitalSignature,keyEncipherment
	eku: id-kp-serverAuth,id-kp-clientAuth
	pre-save command: 
	post-save command: /etc/certmonger/post-scripts/monger-cockpit-59d1099.sh
	track: yes
	auto-renew: yes

TASK [test - ensure certificate generation succeeded] **************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:83
Wednesday 03 August 2022  07:58:10 +0000 (0:00:00.351)       0:00:13.880 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false
}

MSG:

All assertions passed

TASK [test - clean up tracked certificate] *************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:87
Wednesday 03 August 2022  07:58:10 +0000 (0:00:00.030)       0:00:13.911 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "cmd": [
        "getcert",
        "stop-tracking",
        "-f",
        "/etc/pki/tls/certs/monger-cockpit.crt"
    ],
    "delta": "0:00:00.036626",
    "end": "2022-08-03 03:58:10.936396",
    "rc": 0,
    "start": "2022-08-03 03:58:10.899770"
}

STDOUT:

Request "20220803075809" removed.

TASK [test - clean up generated certificate] ***********************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:94
Wednesday 03 August 2022  07:58:10 +0000 (0:00:00.342)       0:00:14.254 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "path": "/etc/pki/tls/certs/monger-cockpit.crt",
    "state": "absent"
}

TASK [test - clean up generated private key] ***********************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:99
Wednesday 03 August 2022  07:58:11 +0000 (0:00:00.289)       0:00:14.543 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "path": "/etc/pki/tls/private/monger-cockpit.key",
    "state": "absent"
}

TASK [test - clean up copied certificate] **************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:104
Wednesday 03 August 2022  07:58:11 +0000 (0:00:00.293)       0:00:14.836 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "path": "/etc/cockpit/ws-certs.d/monger-cockpit.cert",
    "state": "absent"
}

TASK [test - generic cleanup] **************************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:109
Wednesday 03 August 2022  07:58:11 +0000 (0:00:00.299)       0:00:15.136 ****** 
included: /tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml for /cache/rhel-7.qcow2

TASK [cleanup - packages] ******************************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:1
Wednesday 03 August 2022  07:58:11 +0000 (0:00:00.029)       0:00:15.165 ****** 
changed: [/cache/rhel-7.qcow2] => {
    "changed": true,
    "changes": {
        "removed": [
            "cockpit-bridge",
            "cockpit-ws"
        ]
    },
    "rc": 0,
    "results": [
        "cockpit-doc is not installed",
        "Loaded plugins: search-disabled-repos\nResolving Dependencies\n--> Running transaction check\n---> Package cockpit-bridge.x86_64 0:195.10-1.el7 will be erased\n--> Processing Dependency: cockpit-bridge >= 195.10-1.el7 for package: cockpit-system-195.10-1.el7.noarch\n---> Package cockpit-ws.x86_64 0:195.10-1.el7 will be erased\n--> Running transaction check\n---> Package cockpit-system.noarch 0:195.10-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package                Arch           Version              Repository     Size\n================================================================================\nRemoving:\n cockpit-bridge         x86_64         195.10-1.el7         @rhel         868 k\n cockpit-ws             x86_64         195.10-1.el7         @rhel         1.6 M\nRemoving for dependencies:\n cockpit-system         noarch         195.10-1.el7         @rhel         1.8 M\n\nTransaction Summary\n================================================================================\nRemove  2 Packages (+1 Dependent package)\n\nInstalled size: 4.3 M\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Erasing    : cockpit-system-195.10-1.el7.noarch                           1/3 \n  Erasing    : cockpit-bridge-195.10-1.el7.x86_64                           2/3 \n  Erasing    : cockpit-ws-195.10-1.el7.x86_64                               3/3 \n  Verifying  : cockpit-system-195.10-1.el7.noarch                           1/3 \n  Verifying  : cockpit-ws-195.10-1.el7.x86_64                               2/3 \n  Verifying  : cockpit-bridge-195.10-1.el7.x86_64                           3/3 \n\nRemoved:\n  cockpit-bridge.x86_64 0:195.10-1.el7     cockpit-ws.x86_64 0:195.10-1.el7    \n\nDependency Removed:\n  cockpit-system.noarch 0:195.10-1.el7                                          \n\nComplete!\n"
    ]
}

TASK [cleanup - find certificates] *********************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:13
Wednesday 03 August 2022  07:58:13 +0000 (0:00:01.709)       0:00:16.874 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "examined": 2,
    "files": [
        {
            "atime": 1659513474.4346359,
            "ctime": 1659513474.429636,
            "dev": 64769,
            "gid": 0,
            "gr_name": "root",
            "inode": 12599744,
            "isblk": false,
            "ischr": false,
            "isdir": false,
            "isfifo": false,
            "isgid": false,
            "islnk": true,
            "isreg": false,
            "issock": false,
            "isuid": false,
            "mode": "0777",
            "mtime": 1659513474.429636,
            "nlink": 1,
            "path": "/etc/cockpit/ws-certs.d/50-system-role.crt",
            "pw_name": "root",
            "rgrp": true,
            "roth": true,
            "rusr": true,
            "size": 17,
            "uid": 0,
            "wgrp": true,
            "woth": true,
            "wusr": true,
            "xgrp": true,
            "xoth": true,
            "xusr": true
        },
        {
            "atime": 1659513474.7576358,
            "ctime": 1659513474.7546358,
            "dev": 64769,
            "gid": 0,
            "gr_name": "root",
            "inode": 12599745,
            "isblk": false,
            "ischr": false,
            "isdir": false,
            "isfifo": false,
            "isgid": false,
            "islnk": true,
            "isreg": false,
            "issock": false,
            "isuid": false,
            "mode": "0777",
            "mtime": 1659513474.7546358,
            "nlink": 1,
            "path": "/etc/cockpit/ws-certs.d/50-system-role.key",
            "pw_name": "root",
            "rgrp": true,
            "roth": true,
            "rusr": true,
            "size": 17,
            "uid": 0,
            "wgrp": true,
            "woth": true,
            "wusr": true,
            "xgrp": true,
            "xoth": true,
            "xusr": true
        }
    ],
    "matched": 2,
    "skipped_paths": {}
}

MSG:

All paths examined

TASK [cleanup - certificates] **************************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:23
Wednesday 03 August 2022  07:58:13 +0000 (0:00:00.422)       0:00:17.297 ****** 
changed: [/cache/rhel-7.qcow2] => (item={'uid': 0, 'woth': True, 'mtime': 1659513474.429636, 'inode': 12599744, 'isgid': False, 'size': 17, 'roth': True, 'isuid': False, 'isreg': False, 'pw_name': 'root', 'gid': 0, 'ischr': False, 'wusr': True, 'xoth': True, 'rusr': True, 'nlink': 1, 'issock': False, 'rgrp': True, 'gr_name': 'root', 'path': '/etc/cockpit/ws-certs.d/50-system-role.crt', 'xusr': True, 'atime': 1659513474.4346359, 'isdir': False, 'ctime': 1659513474.429636, 'isblk': False, 'xgrp': True, 'dev': 64769, 'wgrp': True, 'isfifo': False, 'mode': '0777', 'islnk': True}) => {
    "ansible_loop_var": "item",
    "changed": true,
    "item": {
        "atime": 1659513474.4346359,
        "ctime": 1659513474.429636,
        "dev": 64769,
        "gid": 0,
        "gr_name": "root",
        "inode": 12599744,
        "isblk": false,
        "ischr": false,
        "isdir": false,
        "isfifo": false,
        "isgid": false,
        "islnk": true,
        "isreg": false,
        "issock": false,
        "isuid": false,
        "mode": "0777",
        "mtime": 1659513474.429636,
        "nlink": 1,
        "path": "/etc/cockpit/ws-certs.d/50-system-role.crt",
        "pw_name": "root",
        "rgrp": true,
        "roth": true,
        "rusr": true,
        "size": 17,
        "uid": 0,
        "wgrp": true,
        "woth": true,
        "wusr": true,
        "xgrp": true,
        "xoth": true,
        "xusr": true
    },
    "path": "/etc/cockpit/ws-certs.d/50-system-role.crt",
    "state": "absent"
}
changed: [/cache/rhel-7.qcow2] => (item={'uid': 0, 'woth': True, 'mtime': 1659513474.7546358, 'inode': 12599745, 'isgid': False, 'size': 17, 'roth': True, 'isuid': False, 'isreg': False, 'pw_name': 'root', 'gid': 0, 'ischr': False, 'wusr': True, 'xoth': True, 'rusr': True, 'nlink': 1, 'issock': False, 'rgrp': True, 'gr_name': 'root', 'path': '/etc/cockpit/ws-certs.d/50-system-role.key', 'xusr': True, 'atime': 1659513474.7576358, 'isdir': False, 'ctime': 1659513474.7546358, 'isblk': False, 'xgrp': True, 'dev': 64769, 'wgrp': True, 'isfifo': False, 'mode': '0777', 'islnk': True}) => {
    "ansible_loop_var": "item",
    "changed": true,
    "item": {
        "atime": 1659513474.7576358,
        "ctime": 1659513474.7546358,
        "dev": 64769,
        "gid": 0,
        "gr_name": "root",
        "inode": 12599745,
        "isblk": false,
        "ischr": false,
        "isdir": false,
        "isfifo": false,
        "isgid": false,
        "islnk": true,
        "isreg": false,
        "issock": false,
        "isuid": false,
        "mode": "0777",
        "mtime": 1659513474.7546358,
        "nlink": 1,
        "path": "/etc/cockpit/ws-certs.d/50-system-role.key",
        "pw_name": "root",
        "rgrp": true,
        "roth": true,
        "rusr": true,
        "size": 17,
        "uid": 0,
        "wgrp": true,
        "woth": true,
        "wusr": true,
        "xgrp": true,
        "xoth": true,
        "xusr": true
    },
    "path": "/etc/cockpit/ws-certs.d/50-system-role.key",
    "state": "absent"
}

TASK [cleanup - config file] ***************************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:32
Wednesday 03 August 2022  07:58:14 +0000 (0:00:00.575)       0:00:17.873 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "path": "/etc/cockpit/cockpit.conf",
    "state": "absent"
}

TASK [cleanup - port customization] ********************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:40
Wednesday 03 August 2022  07:58:14 +0000 (0:00:00.306)       0:00:18.179 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "path": "/etc/systemd/system/cockpit.socket.d/",
    "state": "absent"
}

TASK [cleanup - reload systemd] ************************************************
task path: /tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:48
Wednesday 03 August 2022  07:58:15 +0000 (0:00:00.309)       0:00:18.489 ****** 
ok: [/cache/rhel-7.qcow2] => {
    "changed": false,
    "name": null,
    "status": {}
}
META: ran handlers
META: ran handlers

PLAY RECAP *********************************************************************
/cache/rhel-7.qcow2        : ok=36   changed=13   unreachable=0    failed=0    skipped=9    rescued=0    ignored=0   

Wednesday 03 August 2022  07:58:15 +0000 (0:00:00.468)       0:00:18.958 ****** 
=============================================================================== 
linux-system-roles.certificate : Ensure certificate role dependencies are installed --- 2.37s
/tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:5 
linux-system-roles.certificate : Ensure provider packages are installed --- 2.02s
/tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:22 
cleanup - packages ------------------------------------------------------ 1.71s
/tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:1 ----------------------------
set up internal repositories -------------------------------------------- 1.32s
/cache/rhel-7_setup.yml:5 -----------------------------------------------------
Gathering Facts --------------------------------------------------------- 0.90s
/tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:5 ---------------
linux-system-roles.certificate : Ensure certificate requests ------------ 0.85s
/tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:100 
fedora.linux_system_roles.cockpit : Ensure Cockpit Web Console is started/stopped and enabled/disabled --- 0.63s
/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:75 
fedora.linux_system_roles.cockpit : Ensure Cockpit Web Console packages are installed. --- 0.62s
/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/setup-yum.yml:6 
fedora.linux_system_roles.cockpit : List active RHEL repositories ------- 0.62s
/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:9 
cleanup - certificates -------------------------------------------------- 0.58s
/tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:23 ---------------------------
linux-system-roles.certificate : Ensure provider service is running ----- 0.52s
/tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:88 
test - cockpit works with TLS and expected certificate ------------------ 0.52s
/tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:69 --------------
cleanup - reload systemd ------------------------------------------------ 0.47s
/tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:48 ---------------------------
fedora.linux_system_roles.cockpit : Clean up port configuration file for undefined custom port --- 0.44s
/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/main.yml:66 
linux-system-roles.certificate : Ensure ansible_facts used by role ------ 0.43s
/tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/set_vars.yml:2 
cleanup - find certificates --------------------------------------------- 0.42s
/tmp/tmp4asdzj92/tests/cockpit/tasks/cleanup.yml:13 ---------------------------
fedora.linux_system_roles.cockpit : Ensure ansible_facts used by role --- 0.40s
/tmp/tmp1dlaws1u/ansible_collections/fedora/linux_system_roles/roles/cockpit/tasks/set_vars.yml:2 
linux-system-roles.certificate : Ensure pre-scripts hooks directory exists --- 0.36s
/tmp/tmp4asdzj92/tests/cockpit/roles/linux-system-roles.certificate/tasks/main.yml:33 
test - get certmonger tracking status ----------------------------------- 0.35s
/tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:76 --------------
test - clean up tracked certificate ------------------------------------- 0.34s
/tmp/tmp4asdzj92/tests/cockpit/tests_certificate_runafter.yml:87 --------------