mirror of
https://github.com/valitydev/salt.git
synced 2024-11-06 16:45:27 +00:00
Merge branch '2017.7' into 'oxygen'
Conflicts: - doc/man/salt.7 - salt/modules/git.py - salt/modules/pacman.py - salt/states/git.py - tests/integration/modules/test_mac_user.py - tests/support/parser/__init__.py
This commit is contained in:
commit
0ad101d560
@ -158,6 +158,7 @@ MOCK_MODULES = [
|
|||||||
'jnpr.junos.utils.sw',
|
'jnpr.junos.utils.sw',
|
||||||
'dns',
|
'dns',
|
||||||
'dns.resolver',
|
'dns.resolver',
|
||||||
|
'keyring',
|
||||||
'netaddr',
|
'netaddr',
|
||||||
'netaddr.IPAddress',
|
'netaddr.IPAddress',
|
||||||
'netaddr.core',
|
'netaddr.core',
|
||||||
@ -199,6 +200,8 @@ def mock_decorator_with_params(*oargs, **okwargs):
|
|||||||
|
|
||||||
# Define a fake version attribute for the following libs.
|
# Define a fake version attribute for the following libs.
|
||||||
sys.modules['libcloud'].__version__ = '0.0.0'
|
sys.modules['libcloud'].__version__ = '0.0.0'
|
||||||
|
sys.modules['msgpack'].version = (1, 0, 0)
|
||||||
|
sys.modules['psutil'].version_info = (3, 0, 0)
|
||||||
sys.modules['pymongo'].version = '0.0.0'
|
sys.modules['pymongo'].version = '0.0.0'
|
||||||
sys.modules['ntsecuritycon'].STANDARD_RIGHTS_REQUIRED = 0
|
sys.modules['ntsecuritycon'].STANDARD_RIGHTS_REQUIRED = 0
|
||||||
sys.modules['ntsecuritycon'].SYNCHRONIZE = 0
|
sys.modules['ntsecuritycon'].SYNCHRONIZE = 0
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-API" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-API" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-api \- salt-api Command
|
salt-api \- salt-api Command
|
||||||
.
|
.
|
||||||
@ -103,12 +103,10 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP,
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt\-api(7)\fP
|
\fBsalt\-api(7)\fP
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-CALL" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-CALL" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-call \- salt-call Documentation
|
salt-call \- salt-call Documentation
|
||||||
.
|
.
|
||||||
@ -227,6 +227,11 @@ Write the output to the specified file.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-out\-file\-append, \-\-output\-file\-append
|
||||||
|
Append the output to the specified file.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-\-no\-color
|
.B \-\-no\-color
|
||||||
Disable all colored output
|
Disable all colored output
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
@ -245,14 +250,25 @@ changes and success and \fByellow\fP denotes a expected future change in configu
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-output=STATE_OUTPUT, \-\-state_output=STATE_OUTPUT
|
||||||
|
Override the configured state_output value for minion
|
||||||
|
output. One of \(aqfull\(aq, \(aqterse\(aq, \(aqmixed\(aq, \(aqchanges\(aq or
|
||||||
|
\(aqfilter\(aq. Default: \(aqnone\(aq.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-verbose=STATE_VERBOSE, \-\-state_verbose=STATE_VERBOSE
|
||||||
|
Override the configured state_verbose value for minion
|
||||||
|
output. Set to True or False. Default: none.
|
||||||
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-CLOUD" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-CLOUD" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-cloud \- Salt Cloud Command
|
salt-cloud \- Salt Cloud Command
|
||||||
.
|
.
|
||||||
@ -276,6 +276,11 @@ Write the output to the specified file.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-out\-file\-append, \-\-output\-file\-append
|
||||||
|
Append the output to the specified file.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-\-no\-color
|
.B \-\-no\-color
|
||||||
Disable all colored output
|
Disable all colored output
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
@ -294,6 +299,19 @@ changes and success and \fByellow\fP denotes a expected future change in configu
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-output=STATE_OUTPUT, \-\-state_output=STATE_OUTPUT
|
||||||
|
Override the configured state_output value for minion
|
||||||
|
output. One of \(aqfull\(aq, \(aqterse\(aq, \(aqmixed\(aq, \(aqchanges\(aq or
|
||||||
|
\(aqfilter\(aq. Default: \(aqnone\(aq.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-verbose=STATE_VERBOSE, \-\-state_verbose=STATE_VERBOSE
|
||||||
|
Override the configured state_verbose value for minion
|
||||||
|
output. Set to True or False. Default: none.
|
||||||
|
.UNINDENT
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
.sp
|
.sp
|
||||||
To create 4 VMs named web1, web2, db1, and db2 from specified profiles:
|
To create 4 VMs named web1, web2, db1, and db2 from specified profiles:
|
||||||
@ -369,13 +387,11 @@ salt\-cloud \-m /path/to/cloud.map \-Q
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt\-cloud(7)\fP
|
\fBsalt\-cloud(7)\fP
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-CP" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-CP" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-cp \- salt-cp Documentation
|
salt-cp \- salt-cp Documentation
|
||||||
.
|
.
|
||||||
@ -31,34 +31,55 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||||
..
|
..
|
||||||
.sp
|
.sp
|
||||||
Copy a file to a set of systems
|
Copy a file or files to one or more minions
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.INDENT 3.5
|
.INDENT 3.5
|
||||||
.sp
|
.sp
|
||||||
.nf
|
.nf
|
||||||
.ft C
|
.ft C
|
||||||
salt\-cp \(aq*\(aq [ options ] SOURCE DEST
|
salt\-cp \(aq*\(aq [ options ] SOURCE [SOURCE2 SOURCE3 ...] DEST
|
||||||
|
|
||||||
salt\-cp \-E \(aq.*\(aq [ options ] SOURCE DEST
|
salt\-cp \-E \(aq.*\(aq [ options ] SOURCE [SOURCE2 SOURCE3 ...] DEST
|
||||||
|
|
||||||
salt\-cp \-G \(aqos:Arch.*\(aq [ options ] SOURCE DEST
|
salt\-cp \-G \(aqos:Arch.*\(aq [ options ] SOURCE [SOURCE2 SOURCE3 ...] DEST
|
||||||
.ft P
|
.ft P
|
||||||
.fi
|
.fi
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.sp
|
.sp
|
||||||
Salt copy copies a local file out to all of the Salt minions matched by the
|
salt\-cp copies files from the master to all of the Salt minions matched by the
|
||||||
given target.
|
specified target expression.
|
||||||
.sp
|
.sp
|
||||||
Salt copy is only intended for use with small files (< 100KB). If you need
|
\fBNOTE:\fP
|
||||||
to copy large files out to minions please use the cp.get_file function.
|
.INDENT 0.0
|
||||||
.sp
|
.INDENT 3.5
|
||||||
Note: salt\-cp uses salt\(aqs publishing mechanism. This means the privacy of the
|
salt\-cp uses Salt\(aqs publishing mechanism. This means the privacy of the
|
||||||
contents of the file on the wire is completely dependent upon the transport
|
contents of the file on the wire is completely dependent upon the transport
|
||||||
in use. In addition, if the salt\-master is running with debug logging it is
|
in use. In addition, if the master or minion is running with debug logging,
|
||||||
possible that the contents of the file will be logged to disk.
|
the contents of the file will be logged to disk.
|
||||||
|
.sp
|
||||||
|
In addition, this tool is less efficient than the Salt fileserver when
|
||||||
|
copying larger files. It is recommended to instead use
|
||||||
|
\fBcp.get_file\fP to copy larger files to
|
||||||
|
minions. However, this requires the file to be located within one of the
|
||||||
|
fileserver directories.
|
||||||
|
.UNINDENT
|
||||||
|
.UNINDENT
|
||||||
|
.sp
|
||||||
|
Changed in version 2016.3.7,2016.11.6,2017.7.0: Compression support added, disable with \fB\-n\fP\&. Also, if the destination
|
||||||
|
path ends in a path separator (i.e. \fB/\fP, or \fB\e\fP on Windows, the
|
||||||
|
desitination will be assumed to be a directory. Finally, recursion is now
|
||||||
|
supported, allowing for entire directories to be copied.
|
||||||
|
|
||||||
|
.sp
|
||||||
|
Changed in version 2016.11.7,2017.7.2: Reverted back to the old copy mode to preserve backward compatibility. The
|
||||||
|
new functionality added in 2016.6.6 and 2017.7.0 is now available using the
|
||||||
|
\fB\-C\fP or \fB\-\-chunked\fP CLI arguments. Note that compression, recursive
|
||||||
|
copying, and support for copying large files is only available in chunked
|
||||||
|
mode.
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@ -160,15 +181,30 @@ to identify targets. Range expressions look like %cluster.
|
|||||||
Using the Range option requires that a range server is set up and the
|
Using the Range option requires that a range server is set up and the
|
||||||
location of the range server is referenced in the master configuration
|
location of the range server is referenced in the master configuration
|
||||||
file.
|
file.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-C, \-\-chunked
|
||||||
|
Use new chunked mode to copy files. This mode supports large files, recursive
|
||||||
|
directories copying and compression.
|
||||||
|
.sp
|
||||||
|
New in version 2016.11.7,2017.7.2.
|
||||||
|
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-n, \-\-no\-compression
|
||||||
|
Disable gzip compression in chunked mode.
|
||||||
|
.sp
|
||||||
|
New in version 2016.3.7,2016.11.6,2017.7.0.
|
||||||
|
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-KEY" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-KEY" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-key \- salt-key Documentation
|
salt-key \- salt-key Documentation
|
||||||
.
|
.
|
||||||
@ -182,6 +182,11 @@ Write the output to the specified file.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-out\-file\-append, \-\-output\-file\-append
|
||||||
|
Append the output to the specified file.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-\-no\-color
|
.B \-\-no\-color
|
||||||
Disable all colored output
|
Disable all colored output
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
@ -200,6 +205,19 @@ changes and success and \fByellow\fP denotes a expected future change in configu
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-output=STATE_OUTPUT, \-\-state_output=STATE_OUTPUT
|
||||||
|
Override the configured state_output value for minion
|
||||||
|
output. One of \(aqfull\(aq, \(aqterse\(aq, \(aqmixed\(aq, \(aqchanges\(aq or
|
||||||
|
\(aqfilter\(aq. Default: \(aqnone\(aq.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-verbose=STATE_VERBOSE, \-\-state_verbose=STATE_VERBOSE
|
||||||
|
Override the configured state_verbose value for minion
|
||||||
|
output. Set to True or False. Default: none.
|
||||||
|
.UNINDENT
|
||||||
.SS Actions
|
.SS Actions
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@ -322,12 +340,10 @@ Auto\-create a signing key\-pair if it does not yet exist
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-MASTER" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-MASTER" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-master \- salt-master Documentation
|
salt-master \- salt-master Documentation
|
||||||
.
|
.
|
||||||
@ -108,12 +108,10 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP,
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-MINION" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-MINION" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-minion \- salt-minion Documentation
|
salt-minion \- salt-minion Documentation
|
||||||
.
|
.
|
||||||
@ -109,12 +109,10 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP,
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-PROXY" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-PROXY" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-proxy \- salt-proxy Documentation
|
salt-proxy \- salt-proxy Documentation
|
||||||
.
|
.
|
||||||
@ -116,13 +116,11 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP,
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-RUN" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-RUN" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-run \- salt-run Documentation
|
salt-run \- salt-run Documentation
|
||||||
.
|
.
|
||||||
@ -114,12 +114,10 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP,
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-SSH" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-SSH" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-ssh \- salt-ssh Documentation
|
salt-ssh \- salt-ssh Documentation
|
||||||
.
|
.
|
||||||
@ -49,13 +49,35 @@ Salt SSH allows for salt routines to be executed using only SSH for transport
|
|||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
.B \-r, \-\-raw, \-\-raw\-shell
|
.B \-\-version
|
||||||
Execute a raw shell command.
|
Print the version of Salt that is running.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
.B \-\-priv
|
.B \-\-versions\-report
|
||||||
Specify the SSH private key file to be used for authentication.
|
Show program\(aqs dependencies and version number, and then exit
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-h, \-\-help
|
||||||
|
Show the help message and exit
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-c CONFIG_DIR, \-\-config\-dir=CONFIG_dir
|
||||||
|
The location of the Salt configuration directory. This directory contains
|
||||||
|
the configuration files for Salt master and minions. The default location
|
||||||
|
on most systems is \fB/etc/salt\fP\&.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-hard\-crash
|
||||||
|
Raise any original exception rather than exiting gracefully. Default: False.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-r, \-\-raw, \-\-raw\-shell
|
||||||
|
Execute a raw shell command.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@ -90,9 +112,74 @@ is 25.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-extra\-filerefs=EXTRA_FILEREFS
|
||||||
|
Pass in extra files to include in the state tarball.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-min\-extra\-modules=MIN_EXTRA_MODS
|
||||||
|
One or comma\-separated list of extra Python modulesto be included
|
||||||
|
into Minimal Salt.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-thin\-extra\-modules=THIN_EXTRA_MODS
|
||||||
|
One or comma\-separated list of extra Python modulesto be included
|
||||||
|
into Thin Salt.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-v, \-\-verbose
|
||||||
|
Turn on command verbosity, display jid.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-s, \-\-static
|
||||||
|
Return the data from minions as a group after they all return.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-w, \-\-wipe
|
||||||
|
Remove the deployment of the salt files when done executing.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-W, \-\-rand\-thin\-dir
|
||||||
|
Select a random temp dir to deploy on the remote system. The dir
|
||||||
|
will be cleaned after the execution.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-t, \-\-regen\-thin, \-\-thin
|
||||||
|
Trigger a thin tarball regeneration. This is needed if custom
|
||||||
|
grains/modules/states have been added or updated.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-python2\-bin=PYTHON2_BIN
|
||||||
|
Path to a python2 binary which has salt installed.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-python3\-bin=PYTHON3_BIN
|
||||||
|
Path to a python3 binary which has salt installed.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-jid=JID
|
||||||
|
Pass a JID to be used instead of generating one.
|
||||||
|
.UNINDENT
|
||||||
|
.SS Authentication Options
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-priv=SSH_PRIV
|
||||||
|
Specify the SSH private key file to be used for authentication.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-i, \-\-ignore\-host\-keys
|
.B \-i, \-\-ignore\-host\-keys
|
||||||
Disables StrictHostKeyChecking to relax acceptance of new and unknown
|
By default ssh host keys are honored and connections will ask for
|
||||||
host keys.
|
approval. Use this option to disable StrictHostKeyChecking.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@ -103,11 +190,22 @@ changed and would still error with \-\-ignore\-host\-keys.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-user=SSH_USER
|
||||||
|
Set the default user to attempt to use when authenticating.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-\-passwd
|
.B \-\-passwd
|
||||||
Set the default password to attempt to use when authenticating.
|
Set the default password to attempt to use when authenticating.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-askpass
|
||||||
|
Interactively ask for the SSH password with no echo \- avoids password
|
||||||
|
in process args and stored in history.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-\-key\-deploy
|
.B \-\-key\-deploy
|
||||||
Set this flag to attempt to deploy the authorized ssh key with all
|
Set this flag to attempt to deploy the authorized ssh key with all
|
||||||
minions. This combined with \-\-passwd can make initial deployment of keys
|
minions. This combined with \-\-passwd can make initial deployment of keys
|
||||||
@ -115,35 +213,25 @@ very fast and easy.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
.B \-\-version
|
.B \-\-identities\-only
|
||||||
Print the version of Salt that is running.
|
Use the only authentication identity files configured in the ssh_config
|
||||||
|
files. See IdentitiesOnly flag in man ssh_config.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
.B \-\-versions\-report
|
.B \-\-sudo
|
||||||
Show program\(aqs dependencies and version number, and then exit
|
Run command via sudo.
|
||||||
|
.UNINDENT
|
||||||
|
.SS Scan Roster Options
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-scan\-ports=SSH_SCAN_PORTS
|
||||||
|
Comma\-separated list of ports to scan in the scan roster.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
.B \-h, \-\-help
|
.B \-\-scan\-timeout=SSH_SCAN_TIMEOUT
|
||||||
Show the help message and exit
|
Scanning socket timeout for the scan roster.
|
||||||
.UNINDENT
|
|
||||||
.INDENT 0.0
|
|
||||||
.TP
|
|
||||||
.B \-c CONFIG_DIR, \-\-config\-dir=CONFIG_dir
|
|
||||||
The location of the Salt configuration directory. This directory contains
|
|
||||||
the configuration files for Salt master and minions. The default location
|
|
||||||
on most systems is \fB/etc/salt\fP\&.
|
|
||||||
.UNINDENT
|
|
||||||
.SS Target Selection
|
|
||||||
.sp
|
|
||||||
The default matching that Salt utilizes is shell\-style globbing around the
|
|
||||||
minion id. See \fI\%https://docs.python.org/2/library/fnmatch.html#module\-fnmatch\fP\&.
|
|
||||||
.INDENT 0.0
|
|
||||||
.TP
|
|
||||||
.B \-E, \-\-pcre
|
|
||||||
The target expression will be interpreted as a PCRE regular expression
|
|
||||||
rather than a shell glob.
|
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SS Logging Options
|
.SS Logging Options
|
||||||
.sp
|
.sp
|
||||||
@ -167,6 +255,16 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP,
|
|||||||
\fBdebug\fP, \fBinfo\fP, \fBwarning\fP, \fBerror\fP, \fBquiet\fP\&. Default:
|
\fBdebug\fP, \fBinfo\fP, \fBwarning\fP, \fBerror\fP, \fBquiet\fP\&. Default:
|
||||||
\fBwarning\fP\&.
|
\fBwarning\fP\&.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
|
.SS Target Selection
|
||||||
|
.sp
|
||||||
|
The default matching that Salt utilizes is shell\-style globbing around the
|
||||||
|
minion id. See \fI\%https://docs.python.org/2/library/fnmatch.html#module\-fnmatch\fP\&.
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-E, \-\-pcre
|
||||||
|
The target expression will be interpreted as a PCRE regular expression
|
||||||
|
rather than a shell glob.
|
||||||
|
.UNINDENT
|
||||||
.SS Output Options
|
.SS Output Options
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@ -212,6 +310,11 @@ Write the output to the specified file.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-out\-file\-append, \-\-output\-file\-append
|
||||||
|
Append the output to the specified file.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-\-no\-color
|
.B \-\-no\-color
|
||||||
Disable all colored output
|
Disable all colored output
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
@ -230,14 +333,25 @@ changes and success and \fByellow\fP denotes a expected future change in configu
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-output=STATE_OUTPUT, \-\-state_output=STATE_OUTPUT
|
||||||
|
Override the configured state_output value for minion
|
||||||
|
output. One of \(aqfull\(aq, \(aqterse\(aq, \(aqmixed\(aq, \(aqchanges\(aq or
|
||||||
|
\(aqfilter\(aq. Default: \(aqnone\(aq.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-verbose=STATE_VERBOSE, \-\-state_verbose=STATE_VERBOSE
|
||||||
|
Override the configured state_verbose value for minion
|
||||||
|
output. Set to True or False. Default: none.
|
||||||
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-SYNDIC" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-SYNDIC" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-syndic \- salt-syndic Documentation
|
salt-syndic \- salt-syndic Documentation
|
||||||
.
|
.
|
||||||
@ -110,12 +110,10 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP,
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT-UNITY" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT-UNITY" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt-unity \- salt-unity Command
|
salt-unity \- salt-unity Command
|
||||||
.
|
.
|
||||||
@ -50,20 +50,18 @@ invokes that script.
|
|||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt\-api(1)\fP
|
\fBsalt\-api(1)\fP
|
||||||
\fIsalt\-call(1)\fP
|
\fBsalt\-call(1)\fP
|
||||||
\fIsalt\-cloud(1)\fP
|
\fBsalt\-cloud(1)\fP
|
||||||
\fIsalt\-cp(1)\fP
|
\fBsalt\-cp(1)\fP
|
||||||
\fIsalt\-key(1)\fP
|
\fBsalt\-key(1)\fP
|
||||||
\fIsalt\-main(1)\fP
|
\fBsalt\-main(1)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
\fIsalt\-run(1)\fP
|
\fBsalt\-run(1)\fP
|
||||||
\fIsalt\-ssh(1)\fP
|
\fBsalt\-ssh(1)\fP
|
||||||
\fIsalt\-syndic(1)\fP
|
\fBsalt\-syndic(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SALT" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SALT" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
salt \- salt
|
salt \- salt
|
||||||
.
|
.
|
||||||
@ -306,6 +306,11 @@ Write the output to the specified file.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-\-out\-file\-append, \-\-output\-file\-append
|
||||||
|
Append the output to the specified file.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-\-no\-color
|
.B \-\-no\-color
|
||||||
Disable all colored output
|
Disable all colored output
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
@ -324,14 +329,25 @@ changes and success and \fByellow\fP denotes a expected future change in configu
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-output=STATE_OUTPUT, \-\-state_output=STATE_OUTPUT
|
||||||
|
Override the configured state_output value for minion
|
||||||
|
output. One of \(aqfull\(aq, \(aqterse\(aq, \(aqmixed\(aq, \(aqchanges\(aq or
|
||||||
|
\(aqfilter\(aq. Default: \(aqnone\(aq.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-\-state\-verbose=STATE_VERBOSE, \-\-state_verbose=STATE_VERBOSE
|
||||||
|
Override the configured state_verbose value for minion
|
||||||
|
output. Set to True or False. Default: none.
|
||||||
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(7)\fP
|
\fBsalt(7)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
134372
doc/man/salt.7
134372
doc/man/salt.7
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "SPM" "1" "October 31, 2016" "2016.11.0" "Salt"
|
.TH "SPM" "1" "Jan 24, 2018" "2017.7.3" "Salt"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
spm \- Salt Package Manager Command
|
spm \- Salt Package Manager Command
|
||||||
.
|
.
|
||||||
@ -132,12 +132,10 @@ in that directory which describes them.
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.sp
|
.sp
|
||||||
\fIsalt(1)\fP
|
\fBsalt(1)\fP
|
||||||
\fIsalt\-master(1)\fP
|
\fBsalt\-master(1)\fP
|
||||||
\fIsalt\-minion(1)\fP
|
\fBsalt\-minion(1)\fP
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
Thomas S. Hatch <thatch45@gmail.com> and many others, please see the Authors file
|
||||||
.SH COPYRIGHT
|
|
||||||
2016 SaltStack, Inc.
|
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
@ -3044,6 +3044,27 @@ the metadata will be refreshed.
|
|||||||
|
|
||||||
.. _winrepo-minion-config-opts:
|
.. _winrepo-minion-config-opts:
|
||||||
|
|
||||||
|
Minion Windows Software Repo Settings
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
To use these config options, the minion can be running in master-minion or
|
||||||
|
masterless mode.
|
||||||
|
|
||||||
|
|
||||||
|
.. conf_minion:: winrepo_source_dir
|
||||||
|
|
||||||
|
``winrepo_source_dir``
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Default: ``salt://win/repo-ng/``
|
||||||
|
|
||||||
|
The source location for the winrepo sls files.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
winrepo_source_dir: salt://win/repo-ng/
|
||||||
|
|
||||||
Standalone Minion Windows Software Repo Settings
|
Standalone Minion Windows Software Repo Settings
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
@ -3087,19 +3108,6 @@ out for 2015.8.0 and later minions.
|
|||||||
|
|
||||||
winrepo_dir_ng: /srv/salt/win/repo-ng
|
winrepo_dir_ng: /srv/salt/win/repo-ng
|
||||||
|
|
||||||
.. conf_minion:: winrepo_source_dir
|
|
||||||
|
|
||||||
``winrepo_source_dir``
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Default: ``salt://win/repo-ng/``
|
|
||||||
|
|
||||||
The source location for the winrepo sls files.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
winrepo_source_dir: salt://win/repo-ng/
|
|
||||||
|
|
||||||
.. conf_minion:: winrepo_cachefile
|
.. conf_minion:: winrepo_cachefile
|
||||||
.. conf_minion:: win_repo_cachefile
|
.. conf_minion:: win_repo_cachefile
|
||||||
|
|
||||||
|
@ -1005,10 +1005,10 @@ The :py:func:`file.serialize <salt.states.file.serialize>` state can provide a
|
|||||||
shorthand for creating some files from data structures. There are also many
|
shorthand for creating some files from data structures. There are also many
|
||||||
examples within Salt Formulas of creating one-off "serializers" (often as Jinja
|
examples within Salt Formulas of creating one-off "serializers" (often as Jinja
|
||||||
macros) that reformat a data structure to a specific config file format. For
|
macros) that reformat a data structure to a specific config file format. For
|
||||||
example, `Nginx vhosts`__ or the `php.ini`__
|
example, look at the`Nginx vhosts`_ states or the `php.ini`_ file template.
|
||||||
|
|
||||||
__: https://github.com/saltstack-formulas/nginx-formula/blob/5cad4512/nginx/ng/vhosts_config.sls
|
.. _`Nginx vhosts`: https://github.com/saltstack-formulas/nginx-formula/blob/5cad4512/nginx/ng/vhosts_config.sls
|
||||||
__: https://github.com/saltstack-formulas/php-formula/blob/82e2cd3a/php/ng/files/php.ini
|
.. _`php.ini`: https://github.com/saltstack-formulas/php-formula/blob/82e2cd3a/php/ng/files/php.ini
|
||||||
|
|
||||||
Environment specific information
|
Environment specific information
|
||||||
................................
|
................................
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -13,6 +13,12 @@ to ``tcp`` on each Salt minion and Salt master.
|
|||||||
|
|
||||||
transport: tcp
|
transport: tcp
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
We currently recommend that when using Syndics that all Masters and Minions
|
||||||
|
use the same transport. We're investigating a report of an error when using
|
||||||
|
mixed transport types at very heavy loads.
|
||||||
|
|
||||||
Wire Protocol
|
Wire Protocol
|
||||||
=============
|
=============
|
||||||
This implementation over TCP focuses on flexibility over absolute efficiency.
|
This implementation over TCP focuses on flexibility over absolute efficiency.
|
||||||
|
@ -386,8 +386,8 @@ If Exist "%BinDir%\Lib\site-packages\salt\modules\solaris*"^
|
|||||||
del /Q "%BinDir%\Lib\site-packages\salt\modules\solaris*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\modules\solaris*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\modules\solr.py"^
|
If Exist "%BinDir%\Lib\site-packages\salt\modules\solr.py"^
|
||||||
del /Q "%BinDir%\Lib\site-packages\salt\modules\solr.*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\modules\solr.*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\modules\ssh*"^
|
If Exist "%BinDir%\Lib\site-packages\salt\modules\ssh_*"^
|
||||||
del /Q "%BinDir%\Lib\site-packages\salt\modules\ssh*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\modules\ssh_*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\modules\supervisord.py"^
|
If Exist "%BinDir%\Lib\site-packages\salt\modules\supervisord.py"^
|
||||||
del /Q "%BinDir%\Lib\site-packages\salt\modules\supervisord.*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\modules\supervisord.*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\modules\sysbench.py"^
|
If Exist "%BinDir%\Lib\site-packages\salt\modules\sysbench.py"^
|
||||||
@ -522,8 +522,8 @@ If Exist "%BinDir%\Lib\site-packages\salt\states\smartos.py"^
|
|||||||
del /Q "%BinDir%\Lib\site-packages\salt\states\smartos.*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\states\smartos.*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\states\snapper.py"^
|
If Exist "%BinDir%\Lib\site-packages\salt\states\snapper.py"^
|
||||||
del /Q "%BinDir%\Lib\site-packages\salt\states\snapper.*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\states\snapper.*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\states\ssh*"^
|
If Exist "%BinDir%\Lib\site-packages\salt\states\ssh_*"^
|
||||||
del /Q "%BinDir%\Lib\site-packages\salt\states\ssh*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\states\ssh_*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\states\supervisord.py"^
|
If Exist "%BinDir%\Lib\site-packages\salt\states\supervisord.py"^
|
||||||
del /Q "%BinDir%\Lib\site-packages\salt\states\supervisord.*" 1>nul
|
del /Q "%BinDir%\Lib\site-packages\salt\states\supervisord.*" 1>nul
|
||||||
If Exist "%BinDir%\Lib\site-packages\salt\states\sysrc.py"^
|
If Exist "%BinDir%\Lib\site-packages\salt\states\sysrc.py"^
|
||||||
|
@ -212,7 +212,7 @@ def prep_trans_tar(opts, file_client, chunks, file_refs, pillar=None, id_=None,
|
|||||||
os.makedirs(env_root)
|
os.makedirs(env_root)
|
||||||
for ref in file_refs[saltenv]:
|
for ref in file_refs[saltenv]:
|
||||||
for name in ref:
|
for name in ref:
|
||||||
short = salt.utils.url.parse(name)[0]
|
short = salt.utils.url.parse(name)[0].lstrip('/')
|
||||||
cache_dest = os.path.join(cache_dest_root, short)
|
cache_dest = os.path.join(cache_dest_root, short)
|
||||||
try:
|
try:
|
||||||
path = file_client.cache_file(name, saltenv, cachedir=cachedir)
|
path = file_client.cache_file(name, saltenv, cachedir=cachedir)
|
||||||
|
@ -70,7 +70,10 @@ def start(address=None, port=5000, ssl_crt=None, ssl_key=None):
|
|||||||
def post(self, tag): # pylint: disable=arguments-differ
|
def post(self, tag): # pylint: disable=arguments-differ
|
||||||
body = self.request.body
|
body = self.request.body
|
||||||
headers = self.request.headers
|
headers = self.request.headers
|
||||||
payload = {'headers': headers, 'body': body}
|
payload = {
|
||||||
|
'headers': headers if isinstance(headers, dict) else dict(headers),
|
||||||
|
'body': body,
|
||||||
|
}
|
||||||
fire('salt/engines/hook/' + tag, payload)
|
fire('salt/engines/hook/' + tag, payload)
|
||||||
|
|
||||||
application = tornado.web.Application([(r"/(.*)", WebHook), ])
|
application = tornado.web.Application([(r"/(.*)", WebHook), ])
|
||||||
|
@ -2931,9 +2931,8 @@ def shell_info(shell, list_modules=False):
|
|||||||
'HKEY_LOCAL_MACHINE',
|
'HKEY_LOCAL_MACHINE',
|
||||||
'Software\\Microsoft\\PowerShell\\{0}'.format(reg_ver),
|
'Software\\Microsoft\\PowerShell\\{0}'.format(reg_ver),
|
||||||
'Install')
|
'Install')
|
||||||
if 'vtype' in install_data and \
|
if install_data.get('vtype') == 'REG_DWORD' and \
|
||||||
install_data['vtype'] == 'REG_DWORD' and \
|
install_data.get('vdata') == 1:
|
||||||
install_data['vdata'] == 1:
|
|
||||||
details = __salt__['reg.list_values'](
|
details = __salt__['reg.list_values'](
|
||||||
'HKEY_LOCAL_MACHINE',
|
'HKEY_LOCAL_MACHINE',
|
||||||
'Software\\Microsoft\\PowerShell\\{0}\\'
|
'Software\\Microsoft\\PowerShell\\{0}\\'
|
||||||
|
@ -6,6 +6,7 @@ from __future__ import absolute_import, print_function, unicode_literals
|
|||||||
|
|
||||||
# Import python libs
|
# Import python libs
|
||||||
import copy
|
import copy
|
||||||
|
import glob
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
@ -245,13 +246,17 @@ def _git_run(command, cwd=None, user=None, password=None, identity=None,
|
|||||||
)
|
)
|
||||||
tmp_ssh_wrapper = None
|
tmp_ssh_wrapper = None
|
||||||
if salt.utils.platform.is_windows():
|
if salt.utils.platform.is_windows():
|
||||||
for suffix in ('', ' (x86)'):
|
# Known locations for Git's ssh.exe in Windows
|
||||||
ssh_exe = (
|
globmasks = [os.path.join(os.getenv('SystemDrive'), os.sep,
|
||||||
'C:\\Program Files{0}\\Git\\bin\\ssh.exe'
|
'Program Files*', 'Git', 'usr', 'bin',
|
||||||
.format(suffix)
|
'ssh.exe'),
|
||||||
)
|
os.path.join(os.getenv('SystemDrive'), os.sep,
|
||||||
if os.path.isfile(ssh_exe):
|
'Program Files*', 'Git', 'bin',
|
||||||
env['GIT_SSH_EXE'] = ssh_exe
|
'ssh.exe')]
|
||||||
|
for globmask in globmasks:
|
||||||
|
ssh_exe = glob.glob(globmask)
|
||||||
|
if ssh_exe and os.path.isfile(ssh_exe[0]):
|
||||||
|
env['GIT_SSH_EXE'] = ssh_exe[0]
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise CommandExecutionError(
|
raise CommandExecutionError(
|
||||||
|
@ -1348,5 +1348,5 @@ def owner(*paths, **kwargs): # pylint: disable=unused-argument
|
|||||||
else:
|
else:
|
||||||
ret[path] = ''
|
ret[path] = ''
|
||||||
if len(ret) == 1:
|
if len(ret) == 1:
|
||||||
return six.itervalues(ret)
|
return next(six.itervalues(ret))
|
||||||
return ret
|
return ret
|
||||||
|
@ -442,7 +442,7 @@ def refresh_db(root=None):
|
|||||||
|
|
||||||
def install(name=None,
|
def install(name=None,
|
||||||
refresh=False,
|
refresh=False,
|
||||||
sysupgrade=False,
|
sysupgrade=None,
|
||||||
pkgs=None,
|
pkgs=None,
|
||||||
sources=None,
|
sources=None,
|
||||||
**kwargs):
|
**kwargs):
|
||||||
@ -482,7 +482,8 @@ def install(name=None,
|
|||||||
|
|
||||||
sysupgrade
|
sysupgrade
|
||||||
Whether or not to upgrade the system packages before installing.
|
Whether or not to upgrade the system packages before installing.
|
||||||
|
If refresh is set to ``True`` but sysupgrade is not specified, ``-u`` will be
|
||||||
|
applied
|
||||||
|
|
||||||
Multiple Package Installation Options:
|
Multiple Package Installation Options:
|
||||||
|
|
||||||
@ -520,9 +521,6 @@ def install(name=None,
|
|||||||
{'<package>': {'old': '<old-version>',
|
{'<package>': {'old': '<old-version>',
|
||||||
'new': '<new-version>'}}
|
'new': '<new-version>'}}
|
||||||
'''
|
'''
|
||||||
refresh = salt.utils.data.is_true(refresh)
|
|
||||||
sysupgrade = salt.utils.data.is_true(sysupgrade)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
pkg_params, pkg_type = __salt__['pkg_resource.parse_targets'](
|
pkg_params, pkg_type = __salt__['pkg_resource.parse_targets'](
|
||||||
name, pkgs, sources, **kwargs
|
name, pkgs, sources, **kwargs
|
||||||
@ -550,9 +548,9 @@ def install(name=None,
|
|||||||
cmd.extend(pkg_params)
|
cmd.extend(pkg_params)
|
||||||
elif pkg_type == 'repository':
|
elif pkg_type == 'repository':
|
||||||
cmd.append('-S')
|
cmd.append('-S')
|
||||||
if refresh:
|
if refresh is True:
|
||||||
cmd.append('-y')
|
cmd.append('-y')
|
||||||
if sysupgrade:
|
if sysupgrade is True or (sysupgrade is None and refresh is True):
|
||||||
cmd.append('-u')
|
cmd.append('-u')
|
||||||
cmd.extend(['--noprogressbar', '--noconfirm', '--needed'])
|
cmd.extend(['--noprogressbar', '--noconfirm', '--needed'])
|
||||||
wildcards = []
|
wildcards = []
|
||||||
|
@ -92,9 +92,13 @@ class Registry(object): # pylint: disable=R0903
|
|||||||
'''
|
'''
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.hkeys = {
|
self.hkeys = {
|
||||||
|
'HKEY_CURRENT_CONFIG': win32con.HKEY_CURRENT_CONFIG,
|
||||||
|
'HKEY_CLASSES_ROOT': win32con.HKEY_CLASSES_ROOT,
|
||||||
'HKEY_CURRENT_USER': win32con.HKEY_CURRENT_USER,
|
'HKEY_CURRENT_USER': win32con.HKEY_CURRENT_USER,
|
||||||
'HKEY_LOCAL_MACHINE': win32con.HKEY_LOCAL_MACHINE,
|
'HKEY_LOCAL_MACHINE': win32con.HKEY_LOCAL_MACHINE,
|
||||||
'HKEY_USERS': win32con.HKEY_USERS,
|
'HKEY_USERS': win32con.HKEY_USERS,
|
||||||
|
'HKCC': win32con.HKEY_CURRENT_CONFIG,
|
||||||
|
'HKCR': win32con.HKEY_CLASSES_ROOT,
|
||||||
'HKCU': win32con.HKEY_CURRENT_USER,
|
'HKCU': win32con.HKEY_CURRENT_USER,
|
||||||
'HKLM': win32con.HKEY_LOCAL_MACHINE,
|
'HKLM': win32con.HKEY_LOCAL_MACHINE,
|
||||||
'HKU': win32con.HKEY_USERS,
|
'HKU': win32con.HKEY_USERS,
|
||||||
@ -127,9 +131,11 @@ class Registry(object): # pylint: disable=R0903
|
|||||||
# delete_key_recursive uses this to check the subkey contains enough \
|
# delete_key_recursive uses this to check the subkey contains enough \
|
||||||
# as we do not want to remove all or most of the registry
|
# as we do not want to remove all or most of the registry
|
||||||
self.subkey_slash_check = {
|
self.subkey_slash_check = {
|
||||||
win32con.HKEY_CURRENT_USER: 0,
|
win32con.HKEY_CURRENT_USER: 0,
|
||||||
win32con.HKEY_LOCAL_MACHINE: 1,
|
win32con.HKEY_LOCAL_MACHINE: 1,
|
||||||
win32con.HKEY_USERS: 1
|
win32con.HKEY_USERS: 1,
|
||||||
|
win32con.HKEY_CURRENT_CONFIG: 1,
|
||||||
|
win32con.HKEY_CLASSES_ROOT: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
self.registry_32 = {
|
self.registry_32 = {
|
||||||
@ -200,6 +206,8 @@ def list_keys(hive, key=None, use_32bit_registry=False):
|
|||||||
- HKEY_LOCAL_MACHINE or HKLM
|
- HKEY_LOCAL_MACHINE or HKLM
|
||||||
- HKEY_CURRENT_USER or HKCU
|
- HKEY_CURRENT_USER or HKCU
|
||||||
- HKEY_USER or HKU
|
- HKEY_USER or HKU
|
||||||
|
- HKEY_CLASSES_ROOT or HKCR
|
||||||
|
- HKEY_CURRENT_CONFIG or HKCC
|
||||||
|
|
||||||
:param str key: The key (looks like a path) to the value name. If a key is
|
:param str key: The key (looks like a path) to the value name. If a key is
|
||||||
not passed, the keys under the hive will be returned.
|
not passed, the keys under the hive will be returned.
|
||||||
@ -253,6 +261,8 @@ def list_values(hive, key=None, use_32bit_registry=False, include_default=True):
|
|||||||
- HKEY_LOCAL_MACHINE or HKLM
|
- HKEY_LOCAL_MACHINE or HKLM
|
||||||
- HKEY_CURRENT_USER or HKCU
|
- HKEY_CURRENT_USER or HKCU
|
||||||
- HKEY_USER or HKU
|
- HKEY_USER or HKU
|
||||||
|
- HKEY_CLASSES_ROOT or HKCR
|
||||||
|
- HKEY_CURRENT_CONFIG or HKCC
|
||||||
|
|
||||||
:param str key: The key (looks like a path) to the value name. If a key is
|
:param str key: The key (looks like a path) to the value name. If a key is
|
||||||
not passed, the values under the hive will be returned.
|
not passed, the values under the hive will be returned.
|
||||||
@ -292,9 +302,15 @@ def list_values(hive, key=None, use_32bit_registry=False, include_default=True):
|
|||||||
value = {'hive': local_hive,
|
value = {'hive': local_hive,
|
||||||
'key': local_key,
|
'key': local_key,
|
||||||
'vname': _to_mbcs(vname),
|
'vname': _to_mbcs(vname),
|
||||||
'vdata': _to_mbcs(vdata),
|
|
||||||
'vtype': registry.vtype_reverse[vtype],
|
'vtype': registry.vtype_reverse[vtype],
|
||||||
'success': True}
|
'success': True}
|
||||||
|
# Only convert text types to unicode
|
||||||
|
if vtype == win32con.REG_MULTI_SZ:
|
||||||
|
value['vdata'] = [_to_mbcs(i) for i in vdata]
|
||||||
|
elif vtype in [win32con.REG_SZ, win32con.REG_EXPAND_SZ]:
|
||||||
|
value['vdata'] = _to_mbcs(vdata)
|
||||||
|
else:
|
||||||
|
value['vdata'] = vdata
|
||||||
values.append(value)
|
values.append(value)
|
||||||
except pywintypes.error as exc: # pylint: disable=E0602
|
except pywintypes.error as exc: # pylint: disable=E0602
|
||||||
log.debug(r'Cannot find key: %s\%s', hive, key, exc_info=True)
|
log.debug(r'Cannot find key: %s\%s', hive, key, exc_info=True)
|
||||||
@ -314,6 +330,8 @@ def read_value(hive, key, vname=None, use_32bit_registry=False):
|
|||||||
- HKEY_LOCAL_MACHINE or HKLM
|
- HKEY_LOCAL_MACHINE or HKLM
|
||||||
- HKEY_CURRENT_USER or HKCU
|
- HKEY_CURRENT_USER or HKCU
|
||||||
- HKEY_USER or HKU
|
- HKEY_USER or HKU
|
||||||
|
- HKEY_CLASSES_ROOT or HKCR
|
||||||
|
- HKEY_CURRENT_CONFIG or HKCC
|
||||||
|
|
||||||
:param str key: The key (looks like a path) to the value name.
|
:param str key: The key (looks like a path) to the value name.
|
||||||
|
|
||||||
@ -367,11 +385,14 @@ def read_value(hive, key, vname=None, use_32bit_registry=False):
|
|||||||
# RegQueryValueEx returns and accepts unicode data
|
# RegQueryValueEx returns and accepts unicode data
|
||||||
vdata, vtype = win32api.RegQueryValueEx(handle, local_vname)
|
vdata, vtype = win32api.RegQueryValueEx(handle, local_vname)
|
||||||
if vdata or vdata in [0, '']:
|
if vdata or vdata in [0, '']:
|
||||||
|
# Only convert text types to unicode
|
||||||
ret['vtype'] = registry.vtype_reverse[vtype]
|
ret['vtype'] = registry.vtype_reverse[vtype]
|
||||||
if vtype == 7:
|
if vtype == win32con.REG_MULTI_SZ:
|
||||||
ret['vdata'] = [_to_mbcs(i) for i in vdata]
|
ret['vdata'] = [_to_mbcs(i) for i in vdata]
|
||||||
else:
|
elif vtype in [win32con.REG_SZ, win32con.REG_EXPAND_SZ]:
|
||||||
ret['vdata'] = _to_mbcs(vdata)
|
ret['vdata'] = _to_mbcs(vdata)
|
||||||
|
else:
|
||||||
|
ret['vdata'] = vdata
|
||||||
else:
|
else:
|
||||||
ret['comment'] = 'Empty Value'
|
ret['comment'] = 'Empty Value'
|
||||||
except WindowsError: # pylint: disable=E0602
|
except WindowsError: # pylint: disable=E0602
|
||||||
@ -408,6 +429,8 @@ def set_value(hive,
|
|||||||
- HKEY_LOCAL_MACHINE or HKLM
|
- HKEY_LOCAL_MACHINE or HKLM
|
||||||
- HKEY_CURRENT_USER or HKCU
|
- HKEY_CURRENT_USER or HKCU
|
||||||
- HKEY_USER or HKU
|
- HKEY_USER or HKU
|
||||||
|
- HKEY_CLASSES_ROOT or HKCR
|
||||||
|
- HKEY_CURRENT_CONFIG or HKCC
|
||||||
|
|
||||||
:param str key: The key (looks like a path) to the value name.
|
:param str key: The key (looks like a path) to the value name.
|
||||||
|
|
||||||
@ -548,6 +571,8 @@ def delete_key_recursive(hive, key, use_32bit_registry=False):
|
|||||||
- HKEY_LOCAL_MACHINE or HKLM
|
- HKEY_LOCAL_MACHINE or HKLM
|
||||||
- HKEY_CURRENT_USER or HKCU
|
- HKEY_CURRENT_USER or HKCU
|
||||||
- HKEY_USER or HKU
|
- HKEY_USER or HKU
|
||||||
|
- HKEY_CLASSES_ROOT or HKCR
|
||||||
|
- HKEY_CURRENT_CONFIG or HKCC
|
||||||
|
|
||||||
:param key: The key to remove (looks like a path)
|
:param key: The key to remove (looks like a path)
|
||||||
|
|
||||||
@ -645,6 +670,8 @@ def delete_value(hive, key, vname=None, use_32bit_registry=False):
|
|||||||
- HKEY_LOCAL_MACHINE or HKLM
|
- HKEY_LOCAL_MACHINE or HKLM
|
||||||
- HKEY_CURRENT_USER or HKCU
|
- HKEY_CURRENT_USER or HKCU
|
||||||
- HKEY_USER or HKU
|
- HKEY_USER or HKU
|
||||||
|
- HKEY_CLASSES_ROOT or HKCR
|
||||||
|
- HKEY_CURRENT_CONFIG or HKCC
|
||||||
|
|
||||||
:param str key: The key (looks like a path) to the value name.
|
:param str key: The key (looks like a path) to the value name.
|
||||||
|
|
||||||
|
@ -304,7 +304,7 @@ def list_update(name, download=False, install=False):
|
|||||||
'''
|
'''
|
||||||
salt.utils.versions.warn_until(
|
salt.utils.versions.warn_until(
|
||||||
'Fluorine',
|
'Fluorine',
|
||||||
'This function is replaced by \'get\' as of Salt 2017.7.0. This'
|
'This function is replaced by \'get\' as of Salt 2017.7.0. This '
|
||||||
'warning will be removed in Salt Fluorine.')
|
'warning will be removed in Salt Fluorine.')
|
||||||
return get(name, download, install)
|
return get(name, download, install)
|
||||||
|
|
||||||
@ -531,7 +531,7 @@ def list_updates(software=True,
|
|||||||
'''
|
'''
|
||||||
salt.utils.versions.warn_until(
|
salt.utils.versions.warn_until(
|
||||||
'Fluorine',
|
'Fluorine',
|
||||||
'This function is replaced by \'list\' as of Salt 2017.7.0. This'
|
'This function is replaced by \'list\' as of Salt 2017.7.0. This '
|
||||||
'warning will be removed in Salt Fluorine.')
|
'warning will be removed in Salt Fluorine.')
|
||||||
return list(software, drivers, summary, skip_installed, categories,
|
return list(software, drivers, summary, skip_installed, categories,
|
||||||
severities, download, install)
|
severities, download, install)
|
||||||
@ -719,7 +719,7 @@ def download_update(name):
|
|||||||
'''
|
'''
|
||||||
salt.utils.versions.warn_until(
|
salt.utils.versions.warn_until(
|
||||||
'Fluorine',
|
'Fluorine',
|
||||||
'This function is replaced by \'download\' as of Salt 2017.7.0. This'
|
'This function is replaced by \'download\' as of Salt 2017.7.0. This '
|
||||||
'warning will be removed in Salt Fluorine.')
|
'warning will be removed in Salt Fluorine.')
|
||||||
return download(name)
|
return download(name)
|
||||||
|
|
||||||
@ -751,7 +751,7 @@ def download_updates(names):
|
|||||||
'''
|
'''
|
||||||
salt.utils.versions.warn_until(
|
salt.utils.versions.warn_until(
|
||||||
'Fluorine',
|
'Fluorine',
|
||||||
'This function is replaced by \'download\' as of Salt 2017.7.0. This'
|
'This function is replaced by \'download\' as of Salt 2017.7.0. This '
|
||||||
'warning will be removed in Salt Fluorine.')
|
'warning will be removed in Salt Fluorine.')
|
||||||
return download(names)
|
return download(names)
|
||||||
|
|
||||||
@ -839,7 +839,7 @@ def install_update(name):
|
|||||||
'''
|
'''
|
||||||
salt.utils.versions.warn_until(
|
salt.utils.versions.warn_until(
|
||||||
'Fluorine',
|
'Fluorine',
|
||||||
'This function is replaced by \'install\' as of Salt 2017.7.0. This'
|
'This function is replaced by \'install\' as of Salt 2017.7.0. This '
|
||||||
'warning will be removed in Salt Fluorine.')
|
'warning will be removed in Salt Fluorine.')
|
||||||
return install(name)
|
return install(name)
|
||||||
|
|
||||||
@ -870,7 +870,7 @@ def install_updates(names):
|
|||||||
'''
|
'''
|
||||||
salt.utils.versions.warn_until(
|
salt.utils.versions.warn_until(
|
||||||
'Fluorine',
|
'Fluorine',
|
||||||
'This function is replaced by \'install\' as of Salt 2017.7.0. This'
|
'This function is replaced by \'install\' as of Salt 2017.7.0. This '
|
||||||
'warning will be removed in Salt Fluorine.')
|
'warning will be removed in Salt Fluorine.')
|
||||||
return install(names)
|
return install(names)
|
||||||
|
|
||||||
|
@ -107,7 +107,9 @@ def installed(name, version=None, source=None, force=False, pre_versions=False,
|
|||||||
|
|
||||||
# Package installed
|
# Package installed
|
||||||
else:
|
else:
|
||||||
version_info = __salt__['chocolatey.version'](name, check_remote=True)
|
version_info = __salt__['chocolatey.version'](name=name,
|
||||||
|
check_remote=True,
|
||||||
|
source=source)
|
||||||
|
|
||||||
full_name = name
|
full_name = name
|
||||||
for pkg in version_info:
|
for pkg in version_info:
|
||||||
|
@ -2312,6 +2312,7 @@ def detached(name,
|
|||||||
else:
|
else:
|
||||||
# Clone repository
|
# Clone repository
|
||||||
if os.path.isdir(target):
|
if os.path.isdir(target):
|
||||||
|
target_contents = os.listdir(target)
|
||||||
if force_clone:
|
if force_clone:
|
||||||
# Clone is required, and target directory exists, but the
|
# Clone is required, and target directory exists, but the
|
||||||
# ``force`` option is enabled, so we need to clear out its
|
# ``force`` option is enabled, so we need to clear out its
|
||||||
@ -2328,20 +2329,26 @@ def detached(name,
|
|||||||
'place (force_clone=True set in git.detached state)',
|
'place (force_clone=True set in git.detached state)',
|
||||||
target, name
|
target, name
|
||||||
)
|
)
|
||||||
try:
|
removal_errors = {}
|
||||||
if os.path.islink(target):
|
for target_object in target_contents:
|
||||||
os.unlink(target)
|
target_path = os.path.join(target, target_object)
|
||||||
else:
|
try:
|
||||||
salt.utils.files.rm_rf(target)
|
salt.utils.rm_rf(target_path)
|
||||||
except OSError as exc:
|
except OSError as exc:
|
||||||
|
if exc.errno != errno.ENOENT:
|
||||||
|
removal_errors[target_path] = exc
|
||||||
|
if removal_errors:
|
||||||
|
err_strings = [
|
||||||
|
' {0}\n {1}'.format(k, v)
|
||||||
|
for k, v in six.iteritems(removal_errors)
|
||||||
|
]
|
||||||
return _fail(
|
return _fail(
|
||||||
ret,
|
ret,
|
||||||
'Unable to remove {0}: {1}'.format(target, exc),
|
'Unable to remove\n{0}'.format('\n'.join(err_strings)),
|
||||||
comments
|
comments
|
||||||
)
|
)
|
||||||
else:
|
ret['changes']['forced clone'] = True
|
||||||
ret['changes']['forced clone'] = True
|
elif target_contents:
|
||||||
elif os.listdir(target):
|
|
||||||
# Clone is required, but target dir exists and is non-empty. We
|
# Clone is required, but target dir exists and is non-empty. We
|
||||||
# can't proceed.
|
# can't proceed.
|
||||||
return _fail(
|
return _fail(
|
||||||
|
@ -37,11 +37,16 @@ class MacPkgutilModuleTest(ModuleCase):
|
|||||||
if not salt.utils.path.which('pkgutil'):
|
if not salt.utils.path.which('pkgutil'):
|
||||||
self.skipTest('Test requires pkgutil binary')
|
self.skipTest('Test requires pkgutil binary')
|
||||||
|
|
||||||
|
os_release = self.run_function('grains.get', ['osrelease'])
|
||||||
|
self.pkg_name = 'com.apple.pkg.BaseSystemResources'
|
||||||
|
if int(os_release.split('.')[1]) >= 13 and salt.utils.is_darwin():
|
||||||
|
self.pkg_name = 'com.apple.pkg.iTunesX'
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
'''
|
'''
|
||||||
Reset to original settings
|
Reset to original settings
|
||||||
'''
|
'''
|
||||||
self.run_function('pkgutil.forget', ['org.macports.MacPorts'])
|
self.run_function('pkgutil.forget', [TEST_PKG_NAME])
|
||||||
self.run_function('file.remove', ['/opt/local'])
|
self.run_function('file.remove', ['/opt/local'])
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
@ -49,7 +54,7 @@ class MacPkgutilModuleTest(ModuleCase):
|
|||||||
Test pkgutil.list
|
Test pkgutil.list
|
||||||
'''
|
'''
|
||||||
self.assertIsInstance(self.run_function('pkgutil.list'), list)
|
self.assertIsInstance(self.run_function('pkgutil.list'), list)
|
||||||
self.assertIn('com.apple.pkg.BaseSystemResources',
|
self.assertIn(self.pkg_name,
|
||||||
self.run_function('pkgutil.list'))
|
self.run_function('pkgutil.list'))
|
||||||
|
|
||||||
def test_is_installed(self):
|
def test_is_installed(self):
|
||||||
@ -59,7 +64,7 @@ class MacPkgutilModuleTest(ModuleCase):
|
|||||||
# Test Package is installed
|
# Test Package is installed
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
self.run_function('pkgutil.is_installed',
|
self.run_function('pkgutil.is_installed',
|
||||||
['com.apple.pkg.BaseSystemResources']))
|
[self.pkg_name]))
|
||||||
|
|
||||||
# Test Package is not installed
|
# Test Package is not installed
|
||||||
self.assertFalse(
|
self.assertFalse(
|
||||||
|
@ -173,7 +173,7 @@ class MacUserModuleTest(ModuleCase):
|
|||||||
self.assertTrue(os.path.exists('/etc/kcpassword'))
|
self.assertTrue(os.path.exists('/etc/kcpassword'))
|
||||||
|
|
||||||
# Are the contents of the file correct
|
# Are the contents of the file correct
|
||||||
test_data = b'.\xf8\'B\xa0\xd9\xad\x8b\xcd\xcdl'
|
test_data = b".\xc3\xb8'B\xc2\xa0\xc3\x99\xc2\xad\xc2\x8b\xc3\x8d\xc3\x8dl"
|
||||||
with salt.utils.files.fopen('/etc/kcpassword', 'rb') as f:
|
with salt.utils.files.fopen('/etc/kcpassword', 'rb') as f:
|
||||||
file_data = f.read()
|
file_data = f.read()
|
||||||
self.assertEqual(test_data, file_data)
|
self.assertEqual(test_data, file_data)
|
||||||
|
@ -27,6 +27,15 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
|
|||||||
if salt.utils.platform.is_windows():
|
if salt.utils.platform.is_windows():
|
||||||
self.run_function('pkg.refresh_db')
|
self.run_function('pkg.refresh_db')
|
||||||
|
|
||||||
|
os_release = self.run_function('grains.get', ['osrelease'])
|
||||||
|
|
||||||
|
if salt.utils.is_darwin() and int(os_release.split('.')[1]) >= 13:
|
||||||
|
self.pkg = 'wget'
|
||||||
|
elif salt.utils.is_windows():
|
||||||
|
self.pkg = 'putty'
|
||||||
|
else:
|
||||||
|
self.pkg = 'htop'
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
'''
|
'''
|
||||||
verify that packages are installed
|
verify that packages are installed
|
||||||
@ -133,30 +142,18 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
|
|||||||
'''
|
'''
|
||||||
successfully install and uninstall a package
|
successfully install and uninstall a package
|
||||||
'''
|
'''
|
||||||
os_grain = self.run_function('grains.item', ['os'])['os']
|
version = self.run_function('pkg.version', [self.pkg])
|
||||||
os_release = self.run_function('grains.item', ['osrelease'])['osrelease']
|
|
||||||
|
|
||||||
pkg = 'htop'
|
|
||||||
if os_grain == 'Windows':
|
|
||||||
pkg = 'putty'
|
|
||||||
|
|
||||||
version = self.run_function('pkg.version', [pkg])
|
|
||||||
|
|
||||||
if os_grain == 'Ubuntu':
|
|
||||||
if os_release.startswith('12.'):
|
|
||||||
self.skipTest('pkg.install and pkg.remove do not work on ubuntu '
|
|
||||||
'12 when run from the test suite')
|
|
||||||
|
|
||||||
def test_install():
|
def test_install():
|
||||||
install_ret = self.run_function('pkg.install', [pkg])
|
install_ret = self.run_function('pkg.install', [self.pkg])
|
||||||
self.assertIn(pkg, install_ret)
|
self.assertIn(self.pkg, install_ret)
|
||||||
|
|
||||||
def test_remove():
|
def test_remove():
|
||||||
remove_ret = self.run_function('pkg.remove', [pkg])
|
remove_ret = self.run_function('pkg.remove', [self.pkg])
|
||||||
self.assertIn(pkg, remove_ret)
|
self.assertIn(self.pkg, remove_ret)
|
||||||
|
|
||||||
if version and isinstance(version, dict):
|
if version and isinstance(version, dict):
|
||||||
version = version[pkg]
|
version = version[self.pkg]
|
||||||
|
|
||||||
if version:
|
if version:
|
||||||
test_remove()
|
test_remove()
|
||||||
@ -172,15 +169,10 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
|
|||||||
'''
|
'''
|
||||||
test holding and unholding a package
|
test holding and unholding a package
|
||||||
'''
|
'''
|
||||||
pkg = 'htop'
|
|
||||||
os_family = self.run_function('grains.item', ['os_family'])['os_family']
|
os_family = self.run_function('grains.item', ['os_family'])['os_family']
|
||||||
os_major_release = self.run_function('grains.item', ['osmajorrelease'])['osmajorrelease']
|
os_major_release = self.run_function('grains.item', ['osmajorrelease'])['osmajorrelease']
|
||||||
available = self.run_function('sys.doc', ['pkg.hold'])
|
available = self.run_function('sys.doc', ['pkg.hold'])
|
||||||
|
|
||||||
if os_family == 'RedHat':
|
|
||||||
if os_major_release == '5':
|
|
||||||
self.skipTest('`yum versionlock` does not seem to work on RHEL/CentOS 5')
|
|
||||||
|
|
||||||
if available:
|
if available:
|
||||||
if os_family == 'RedHat':
|
if os_family == 'RedHat':
|
||||||
lock_pkg = 'yum-versionlock' if os_major_release == '5' else 'yum-plugin-versionlock'
|
lock_pkg = 'yum-versionlock' if os_major_release == '5' else 'yum-plugin-versionlock'
|
||||||
@ -188,13 +180,13 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
|
|||||||
if not versionlock:
|
if not versionlock:
|
||||||
self.run_function('pkg.install', [lock_pkg])
|
self.run_function('pkg.install', [lock_pkg])
|
||||||
|
|
||||||
hold_ret = self.run_function('pkg.hold', [pkg])
|
hold_ret = self.run_function('pkg.hold', [self.pkg])
|
||||||
self.assertIn(pkg, hold_ret)
|
self.assertIn(self.pkg, hold_ret)
|
||||||
self.assertTrue(hold_ret[pkg]['result'])
|
self.assertTrue(hold_ret[self.pkg]['result'])
|
||||||
|
|
||||||
unhold_ret = self.run_function('pkg.unhold', [pkg])
|
unhold_ret = self.run_function('pkg.unhold', [self.pkg])
|
||||||
self.assertIn(pkg, unhold_ret)
|
self.assertIn(self.pkg, unhold_ret)
|
||||||
self.assertTrue(hold_ret[pkg]['result'])
|
self.assertTrue(hold_ret[self.pkg]['result'])
|
||||||
|
|
||||||
if os_family == 'RedHat':
|
if os_family == 'RedHat':
|
||||||
if not versionlock:
|
if not versionlock:
|
||||||
|
@ -20,6 +20,7 @@ class ServiceModuleTest(ModuleCase):
|
|||||||
self.service_name = 'cron'
|
self.service_name = 'cron'
|
||||||
cmd_name = 'crontab'
|
cmd_name = 'crontab'
|
||||||
os_family = self.run_function('grains.get', ['os_family'])
|
os_family = self.run_function('grains.get', ['os_family'])
|
||||||
|
os_release = self.run_function('grains.get', ['osrelease'])
|
||||||
if os_family == 'RedHat':
|
if os_family == 'RedHat':
|
||||||
self.service_name = 'crond'
|
self.service_name = 'crond'
|
||||||
elif os_family == 'Arch':
|
elif os_family == 'Arch':
|
||||||
@ -27,6 +28,8 @@ class ServiceModuleTest(ModuleCase):
|
|||||||
cmd_name = 'systemctl'
|
cmd_name = 'systemctl'
|
||||||
elif os_family == 'MacOS':
|
elif os_family == 'MacOS':
|
||||||
self.service_name = 'org.ntp.ntpd'
|
self.service_name = 'org.ntp.ntpd'
|
||||||
|
if int(os_release.split('.')[1]) >= 13:
|
||||||
|
self.service_name = 'com.apple.AirPlayXPCHelper'
|
||||||
|
|
||||||
if salt.utils.path.which(cmd_name) is None:
|
if salt.utils.path.which(cmd_name) is None:
|
||||||
self.skipTest('{0} is not installed'.format(cmd_name))
|
self.skipTest('{0} is not installed'.format(cmd_name))
|
||||||
|
@ -26,6 +26,7 @@ class ServiceTest(ModuleCase, SaltReturnAssertsMixin):
|
|||||||
self.service_name = 'cron'
|
self.service_name = 'cron'
|
||||||
cmd_name = 'crontab'
|
cmd_name = 'crontab'
|
||||||
os_family = self.run_function('grains.get', ['os_family'])
|
os_family = self.run_function('grains.get', ['os_family'])
|
||||||
|
os_release = self.run_function('grains.get', ['osrelease'])
|
||||||
self.stopped = False
|
self.stopped = False
|
||||||
self.running = True
|
self.running = True
|
||||||
if os_family == 'RedHat':
|
if os_family == 'RedHat':
|
||||||
@ -35,6 +36,8 @@ class ServiceTest(ModuleCase, SaltReturnAssertsMixin):
|
|||||||
cmd_name = 'systemctl'
|
cmd_name = 'systemctl'
|
||||||
elif os_family == 'MacOS':
|
elif os_family == 'MacOS':
|
||||||
self.service_name = 'org.ntp.ntpd'
|
self.service_name = 'org.ntp.ntpd'
|
||||||
|
if int(os_release.split('.')[1]) >= 13:
|
||||||
|
self.service_name = 'com.apple.AirPlayXPCHelper'
|
||||||
self.stopped = ''
|
self.stopped = ''
|
||||||
self.running = '[0-9]'
|
self.running = '[0-9]'
|
||||||
|
|
||||||
|
@ -457,10 +457,7 @@ class SaltTestingParser(optparse.OptionParser):
|
|||||||
logging_level = logging.INFO
|
logging_level = logging.INFO
|
||||||
else:
|
else:
|
||||||
logging_level = logging.ERROR
|
logging_level = logging.ERROR
|
||||||
if salt.utils.platform.is_windows():
|
os.environ['TESTS_LOG_LEVEL'] = str(self.options.verbosity) # future lint: disable=blacklisted-function
|
||||||
os.environ['TESTS_LOG_LEVEL'] = six.binary_type(self.options.verbosity)
|
|
||||||
else:
|
|
||||||
os.environ['TESTS_LOG_LEVEL'] = six.text_type(self.options.verbosity)
|
|
||||||
consolehandler.setLevel(logging_level)
|
consolehandler.setLevel(logging_level)
|
||||||
logging.root.addHandler(consolehandler)
|
logging.root.addHandler(consolehandler)
|
||||||
log.info('Runtests logging has been setup')
|
log.info('Runtests logging has been setup')
|
||||||
|
@ -132,8 +132,9 @@ def _has_required_moto():
|
|||||||
@skipIf(HAS_MOTO is False, 'The moto module must be installed.')
|
@skipIf(HAS_MOTO is False, 'The moto module must be installed.')
|
||||||
@skipIf(_has_required_boto() is False, 'The boto module must be greater than'
|
@skipIf(_has_required_boto() is False, 'The boto module must be greater than'
|
||||||
' or equal to version {}. Installed: {}'
|
' or equal to version {}. Installed: {}'
|
||||||
.format(required_boto_version, _get_boto_version()))
|
.format(required_boto_version, _get_boto_version() if HAS_BOTO else 'None'))
|
||||||
@skipIf(_has_required_moto() is False, 'The moto version must be >= to version {}. Installed: {}'.format(required_moto_version, _get_moto_version()))
|
@skipIf(_has_required_moto() is False, 'The moto version must be >= to version {}. Installed: {}'
|
||||||
|
.format(required_moto_version, _get_moto_version() if HAS_MOTO else 'None'))
|
||||||
class BotoVpcTestCaseBase(TestCase, LoaderModuleMockMixin):
|
class BotoVpcTestCaseBase(TestCase, LoaderModuleMockMixin):
|
||||||
conn3 = None
|
conn3 = None
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ class CMDMODTestCase(TestCase, LoaderModuleMockMixin):
|
|||||||
with patch('salt.utils.platform.is_windows', MagicMock(return_value=False)):
|
with patch('salt.utils.platform.is_windows', MagicMock(return_value=False)):
|
||||||
with patch('os.path.isfile', MagicMock(return_value=True)):
|
with patch('os.path.isfile', MagicMock(return_value=True)):
|
||||||
with patch('os.access', MagicMock(return_value=True)):
|
with patch('os.access', MagicMock(return_value=True)):
|
||||||
ret = cmdmod._run('foo', use_vt=True).get('stderr')
|
ret = cmdmod._run('foo', cwd=os.getcwd(), use_vt=True).get('stderr')
|
||||||
self.assertIn('foo', ret)
|
self.assertIn('foo', ret)
|
||||||
|
|
||||||
def test_is_valid_shell_windows(self):
|
def test_is_valid_shell_windows(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user