1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-11-14 16:26:13 +01:00
Commit Graph

227 Commits

Author SHA1 Message Date
Jan Chren
fa205be798
Suggest correct python-keyring package version
On Tumbleweed, `zypper in python-keyring` installs python2 version, while `osc` runs on python3.
After this change, user will be pointed to the correct version.
2020-02-29 00:28:20 +00:00
175bcb4613
Remove compat code for Python < 2.6 2020-02-21 15:09:58 +01:00
lethliel
f079be17c2 print web url links for creating requests
This will print the direct url to show the created request.
New general bool option 'print_web_links' must be set to enable
this.

Right now this is only for creating requests. More to follow.
2020-02-06 13:57:38 +01:00
a628ea8cca read debug packages from server side project configuration
=> avoids unresolvable errors when distro is not providing the
    extra/debug package
2019-12-04 08:41:46 +01:00
Marco Strigl
f78057e2d5
Merge pull request #641 from mcepl/337_check_for_request_on_action_1
Make check_for_request_on_action on per default.
2019-11-05 16:03:59 +01:00
lethliel
5fa1e73db6 catch configured keyring without module installed
If a python-keyring based backend is configured, but
python-keyring is not installed osc fails without giving
the user the opportunity to continue.

This introduces a new class method `create` for the AbstractCredentialsManager.
The CredentialsManagers for the backends that use a 3rd party software can
now check if the software is present in its own create method.
2019-10-24 11:21:23 +02:00
ea5f8d40aa
Make check_for_request_on_action on per default.
Fixes #337
2019-10-10 18:02:20 +02:00
lethliel
3ba02b9cec Refactor user extraction
Implement _extract_user_compat() for gnomekeyring special case.
2019-08-29 16:11:29 +02:00
lethliel
cba4b58bbe Improve password handling
* Adapt do_config to use the new credentials manager implementation
  and add a --change-password option which can be used to change the
  password.
* Adapt config_set_option to follow the change in do_config.
* Split selection of the credentials manager descriptor to reuse it
  in do_config and interactive_config_setup.
* Introduce new ConfigMissingCredentialsError which is raised in case
  of missing credentials (user or password). In this case the user will
  be asked to enter the new credentials.
2019-08-29 16:11:17 +02:00
lethliel
36ec0c48d4 Remove passx encode/decode functions from conf.py
They are no longer needed with the new CredentialsManagers
2019-08-29 15:06:48 +02:00
lethliel
629ab25a0e Remove check for GNOME_DESKTOP_SESSION_ID
It was removed from GNOME with this commit:
6bf47ad8c6
2019-08-29 15:06:48 +02:00
lethliel
abf206fa0d New credentials backend (Transient store)
New backend to not store the password and ask for
it every time.
2019-08-29 15:06:45 +02:00
lethliel
eb3a3ef0ec Introduction of new credential management
* new module credentials.py which contains classes
  and methods to set and get passwords for different
  backends:
      - python-keyring
      - gnomekeyring
      - ConfigFile based storage

The new code should be backward compatible except a minor
change in add_section (pass and passx are not removed from
the config parser). This affects only callers that do not pass
a creds_mgr_descriptor.

On initial osc call or initial osc call on new API Url
the user now can decide where to store the password (based
on the backends available on his system)
2019-08-29 15:04:36 +02:00
Marcus Huewe
7c01399a4a Deprecate the "plaintext_passwd" config option
The upcoming credentials manager abstraction supersedes the old
plaintext_passwd behavior. This commits "breaks" the old behavior:
Passwords are not rewritten anymore (plaintext <-> obfuscated)
2019-08-27 15:15:59 +02:00
lethliel
428a81e451 Refactor config setup dialog
Move logic to conf module in new function interactive_config_setup
for new config file and missing apiurl section.

Dropped keyring code, because it was never used in write_initial_config()
2019-08-26 17:25:56 +02:00
Marcus Huewe
820c3adc71 Consider the "realname" config option in apiurl sections
This is a follow up fix for commit ef13d67 ("Export a real name
for vc to consume").
2018-08-17 22:45:17 +02:00
ef13d67208 Export a real name for vc to consume 2018-08-01 09:43:14 -04:00
5e3fe8ba08 give a hint which package to install to get CA certificates 2018-01-26 09:46:52 +01:00
Marcus Huewe
d0213c63a9 All values in the conf.DEFAULTS dict should be strings
Non-strings cause errors during config value interpolation.

Fixes: #372 ("Commit causes crash: The 'build-jobs' config option
should be an integer")
2018-01-24 14:00:02 +01:00
Marcus Huewe
1a92c8b995 The 'build-jobs' config option should be an integer
This fixes the "config['build-jobs'] > 1" check in the build module.
2018-01-23 12:28:55 +01:00
marco
6bc2d3f939 use XDG_CONFIG_HOME/osc/oscrc as default config
write oscrc to the default location for user-specific configuration.
If XDG_CONFIG_HOME is not set use ~/.config/osc/oscrc which is basically the same.

If there is already a ~/.oscrc use this one (for compat reasons). Existing user
installations should not get affected by this commit.

The order is the following:

Given config with -c
config defined in OSC_CONFIG
existing ~/.oscrc
default XDG_CONFIG_HOME/osc/oscrc
2017-11-08 11:17:11 +01:00
Marcus Huewe
48a35fed91 Add config option for the Package.status mtime heuristic
By default, the "status_mtime_heuristic" config option is disabled.
2017-08-15 13:31:10 +02:00
af5a38f4c8 Add compatibility with Debian's obs-build
In Debian and Ubuntu build is renamed to obs-build for disambiguation
purposes.
Add a simple check to use the correct paths if running on Debian and
use /usr/bin/obs-build and /usr/lib/obs-build if so.
2017-07-07 17:47:43 +01:00
Hemmo Nieminen
326abe0c8b Backport a fix from Python 2.7 upstream for urllib2.
This change makes basic authentication fail after first unsuccessful
attempt (instead of automatically retrying) and thus prevents unnecessary
failed login attempts.

This change also allows printing the contents of an HTTP 401 message to
the user.
2016-11-22 11:13:24 +02:00
Marcus Huewe
05ad9efae3 Avoid stale ~/.osc_cookiejar file
Always clear the cookiejar, if ~/.oscrc's mtime is "greater" than
~/.osc_cookiejar's mtime. This fixes issue #86.
2016-11-19 13:01:05 +01:00
Michael Schroeder
55da852a90 Add support for preinstall iamges
Adapted from a submission from Ericsson by Esa Kulmala, thanks a lot!
2016-06-09 16:24:30 +02:00
Bernhard M. Wiedemann
bbefe024e5 add vm-user option
this needs latest obs-build to work
2016-02-18 11:31:59 +01:00
Marcus Huewe
e8783d2501 - introduced new "request_show_source_buildstatus" config option
If enabled, it always shows the source buildstatus during
"osc rq show <id>" or "osc rq list --interactive". By default, it is
disabled.
2016-02-10 18:27:35 +01:00
Marcus Huewe
b15f97bcd0 - conf._build_opener: make sure no certs are checked if "sslcertck" is disabled
Since python >= 2.7.9 urllib2/httplib verifies the ssl cert by default - so
make sure that this "builtin" ssl check is disabled as well if
"sslcertck" is disabled. Fixes #179.
Note: eventually, we should abandon m2crypto and use urllib2/httplib to
verify the ssl cert.
2015-11-28 22:39:49 +01:00
Marcus Huewe
c902d174d8 - conf.parse_apisrv_url: strip trailing slashes from the path
Since commit ca2f1a90c8 a section like
[https://api.opensuse.org/] was not associated with an
"apiurl=https://api.opensuse.org" entry anymore.
2015-08-20 14:45:02 +02:00
Oleg Girko
ca2f1a90c8 Add support for non-root paths in API URLs.
Currently osc supports API URLs without path only,
like https://api.example.com (if there is pathname, it's just ignored).
With this change API URLS with path, like https://example.com/api
are supported correctly.

This is useful for those who can't have OBS api, webui and main site
on different domains and buy separate X.509 certificates for them,
or just can't afford to have separate IP addresses for them
(please note that currently osc doesn't support TLS SNI).

Signed-off-by: Oleg Girko <ol@infoserver.lv>
2015-05-14 16:46:10 +01:00
Marcus Huewe
3547ef95ef Revert "Fix condition for using urllib2 workaround"
This reverts commit 2f14cedcff.

Actually, this was meant to fix https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762825,
which was (probably) caused due to the following:
- commit 320238350f introduced a codepath, which
  should not be needed for python >= 2.7.1 (see also
  https://hg.python.org/cpython/rev/64287)
- this codepath uses the "reset_retry_count" method, which is not present in
  Debian Jessie's libpython2.7-stdlib: libpython2.7-stdlib_2.7.8-11 backports
  a patch from python's 2.7.9 branch, which removes the "reset_retry_count"
  method (https://hg.python.org/cpython/rev/c1edc4e43eb1).

This fixes bnc#911080 and github issue #131.
2014-12-23 04:34:40 +01:00
Marcus Huewe
68d10dfe8b Revert "- reset retry counter on 404 answer for all python 2.7.x versions"
This reverts commit 320238350f.
With python >= 2.7.1 this codepath should not be needed (see also
https://hg.python.org/cpython/rev/64287).

Conflicts:
	osc/conf.py
2014-12-23 03:46:32 +01:00
Denis Pynkin
d17b497867 Added configuration options for kernel and initrd selection during KVM build
Some distributions have no initrd images compatible with KVM builds and
sometimes we need to use not system kernel version.

New options in configuration file:
- build-kernel -- kernel used for VM builds
- build-initrd -- initrd image used for VM builds
2014-11-20 19:09:53 +03:00
Marcus Huewe
ca7ad96ec9 - raise more specific exceptions 2014-10-20 13:29:03 +02:00
Marcus Huewe
a7c92eb18f - do not hardcode path to the build scripts and removed legacy check 2014-10-01 14:45:48 +02:00
Sjoerd Simons
2f14cedcff Fix condition for using urllib2 workaround
See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762825
2014-09-26 09:54:03 +02:00
Marcus Huewe
7efd6db501 - added support for a per apiurl "build-root" option
Resolution order:
OSC_BUILD_ROOT env var > apiurl build-root option > general build-root option
2014-06-04 15:33:30 +02:00
Marcus Huewe
8c506e5929 - fixed "osc -H ..." in combination with a proxy 2014-03-11 19:40:27 +01:00
Marcus Huewe
9034b27814 - fixed creation of ~/.osc_cookiejar
A "PyCFunction_Type" like os.open takes no keyword arguments.
2014-03-10 22:36:56 +01:00
Michal Vyskocil
111fd87715 passx encode/decode functions
The string.encode('bz2') does not work in python3. Implement
passx_encode/passx_decode functions compatible with python 2.6, 2.7 and
3.3.

Add a simple unit test.
2014-01-08 15:43:57 +01:00
Michal Vyskocil
5d5185cbc6 chmod handling
* prefer os.open instead of open && os.chmod
 * prefer os.fchmod when fd exists
2014-01-06 11:12:02 +01:00
Thorsten Behrens
9561a99d6b Do not pass on unicode password from keyrings.
Seems at least gnome keyring returns a unicode string here
needlessly, which calling code then trips over.
2013-11-21 23:46:45 +01:00
Miroslav Suchý
12ffb4e3c4 correctly refer to exception
this is left-over from 87d354e1a0

Addressing:
Traceback (most recent call last):
  File "/usr/bin/osc", line 26, in <module>
    r = babysitter.run(osccli)
  File "/usr/lib/python2.7/site-packages/osc/babysitter.py", line 60, in run
    return prg.main()
  File "/usr/lib/python2.7/site-packages/osc/cmdln.py", line 335, in main
    self.postoptparse()
  File "/usr/lib/python2.7/site-packages/osc/commandline.py", line 136, in postoptparse
    override_verbose = self.options.verbose)
  File "/usr/lib/python2.7/site-packages/osc/conf.py", line 873, in get_config
    add_section(conffile, url, user, passwordx)
  File "/usr/lib/python2.7/site-packages/osc/conf.py", line 712, in add_section
    except OscConfigParser.ConfigParser.DuplicateSectionError:
AttributeError: class OscConfigParser has no attribute 'ConfigParser'
2013-07-17 10:22:29 +02:00
Marcus Huewe
0ac1d32945 - oscssl.verify_certificate: also print cert info if http_debug is set
If http_debug is set we redirect sys.stdout to an StringIO
instance in order to do some header filtering (see conf module)
so we have to use the "original" stdout for printing the certificate
information.
2013-06-15 08:53:26 +02:00
Marcus Huewe
5e0ef46aed - fixed issue #28 ("calling with -H option causes traceback") 2013-05-02 14:55:31 +02:00
Michal Vyskocil
419367fca3 python3 compatibility: urllib
fixes all renames in urllib, urllib2, urlparse modules in python3
2013-04-16 10:51:42 +02:00
Michal Vyskocil
7f2031558c python3 compatibility: print function
The most visible change in python3 - removal of print statement and all
the crufty
   print >> sys.stderr, foo,

The from __future__ import print_function makes it available in python
2.6
2013-04-16 10:51:41 +02:00
Michal Vyskocil
0dcbddbafe python3 compatibility: new syntax for literals
The octal literals got a new syntax 0755 -> 0o755
2013-04-16 10:51:18 +02:00
Michal Vyskocil
87d354e1a0 python3 compatibility: import proper modules
Some modules (httplib, StringIO, ...) were renamed in python3. This
patch try to import the proper symbols from python3 and then fallback to
python2 in a case ImportError will appear.

There is one exception, python 2.7 got the io module with StringIO, but
it allow unicode arguments only. Therefor the old module is poked before
new one.
2013-04-16 10:51:18 +02:00