33import os
44import re
55import sys
6+ from collections import defaultdict
67from collections import OrderedDict
78
89import click
910import jinja2
1011import requests
1112from packaging import version
13+ import validators
14+
1215
1316OS_URI = "https://releases.openstack.org/{}"
1417RPM_OS_URI_MAPPING = {
1821 "https://repo.oepkgs.net/openEuler/rpm/openEuler-{0}/budding-openeuler"
1922 "/openstack/{2}/{1}/Packages/" ,
2023 ('20.03-LTS-SP3' , '21.09' ):
21- "https://repo.openeuler.org/openEuler-{0}/EPOL/main/{1}/Packages/" ,
24+ defaultdict (
25+ lambda : "https://repo.openeuler.org/openEuler-{0}/EPOL/"
26+ "main/{1}/Packages/" ,
27+ dict (rocky = "https://repo.oepkgs.net/openEuler/rpm/openEuler-{0}/"
28+ "budding-openeuler/openstack/{2}/{1}/Packages/" ,
29+ queens = "https://repo.oepkgs.net/openEuler/rpm/openEuler-{0}/"
30+ "budding-openeuler/openstack/{2}/{1}/Packages/" )
31+ ),
2232 ('22.03-LTS' ,):
2333 "https://repo.openeuler.org/openEuler-{0}/EPOL/multi_version"
2434 "/OpenStack/{2}/{1}/Packages/" ,
4656 re .compile (r"^[-_\w]+[-_]tempest[-_]plugin$" ), # *-tempest-plugin
4757]
4858OPENEULER_DEFAULT_REPLACE = re .compile (r"[._]" )
59+ PROXY = {}
4960
5061
5162class ReleasesConfig :
@@ -64,6 +75,8 @@ def __init__(self, content, arch):
6475 for _to_version_tuple in RPM_OS_URI_MAPPING .keys ():
6576 if to_os_version in _to_version_tuple :
6677 _url = RPM_OS_URI_MAPPING .get (_to_version_tuple )
78+ if isinstance (_url , dict ):
79+ _url = _url [from_os_version ]
6780 break
6881 # openstack vs openstack
6982 else :
@@ -157,7 +170,7 @@ def __init__(self, _rpm_os_ver_uri_list):
157170 def rpm_versions (self ):
158171 results = dict ()
159172 for _rpm_os_ver_uri in self .rpm_os_ver_uri_list :
160- r = requests .get (_rpm_os_ver_uri )
173+ r = requests .get (_rpm_os_ver_uri , proxies = PROXY , verify = False )
161174 if r .status_code != requests .codes .ok :
162175 raise RuntimeError ('CAN NOT GET {}' .format (_rpm_os_ver_uri ))
163176 uri_content = r .content .decode ()
@@ -184,7 +197,9 @@ def rpm_versions(self):
184197
185198class UpstreamVersions :
186199 def __init__ (self , _os_ver_uri ):
187- self .url_os_content = requests .get (_os_ver_uri ).content .decode ()
200+ self .url_os_content = requests .get (_os_ver_uri ,
201+ proxies = PROXY ,
202+ verify = False ).content .decode ()
188203
189204 @property
190205 def upstream_versions (self ):
@@ -328,9 +343,13 @@ def filter_upstream(_base_pkg_name):
328343 required = False , show_default = True ,
329344 type = click .Choice (['aarch64' , 'x86_64' ]),
330345 help = 'CPU architecture of distribution' )
331- def run (releases , file_type , file_name_os , arch ):
346+ @click .option ('-p' , '--proxy' , required = False , help = 'HTTP proxy url' )
347+ def run (releases , file_type , file_name_os , arch , proxy ):
332348 if releases :
333349 releases_config = ReleasesConfig (releases , arch )
350+ if isinstance (proxy , str ) and validators .url (proxy ):
351+ PROXY .update ({'http' : proxy , 'https' : proxy })
352+
334353 ver_data = dict ()
335354 for release in releases_config .releases :
336355 _release_config = releases_config .releases_config .get (release )
0 commit comments