├── get-galaxy-platforms ├── requirements.txt ├── get-galaxy-platforms.py └── README.rst └── README.rst /get-galaxy-platforms/requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ansible-sandbox 2 | =============== 3 | 4 | Various tools and sandbox things for developing with Ansible 5 | -------------------------------------------------------------------------------- /get-galaxy-platforms/get-galaxy-platforms.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2019 Red Hat, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | # Queries the Galaxy API to get all the platforms while handling server-side pagination 17 | import json 18 | import requests 19 | 20 | GALAXY = "https://galaxy.ansible.com" 21 | PLATFORMS_ENDPOINT = GALAXY + "/api/v1/platforms" 22 | 23 | session = requests.Session() 24 | 25 | def get_platforms(): 26 | page = session.get(PLATFORMS_ENDPOINT).json() 27 | yield page["results"] 28 | 29 | while page["next_link"] is not None: 30 | next_url = GALAXY + page['next_link'] 31 | page = session.get(next_url).json() 32 | yield page["results"] 33 | 34 | def main(): 35 | platforms = {} 36 | for results in get_platforms(): 37 | for result in results: 38 | name = result["name"] 39 | version = result["release"] 40 | if name not in platforms: 41 | platforms[name] = { 42 | "name": name, 43 | "versions": [] 44 | } 45 | if version not in platforms[name]["versions"]: 46 | platforms[name]["versions"].append(version) 47 | 48 | print(json.dumps(platforms, indent=2)) 49 | 50 | if __name__ == "__main__": 51 | main() 52 | 53 | -------------------------------------------------------------------------------- /get-galaxy-platforms/README.rst: -------------------------------------------------------------------------------- 1 | get-galaxy-platforms 2 | ==================== 3 | 4 | Ansible Galaxy doesn't have a way to easily retrieve all the available platforms 5 | and versions for tagging Ansible role metadata properly. 6 | 7 | See GitHub issues: 8 | 9 | - https://github.com/ansible/galaxy-issues/issues/256 10 | - https://github.com/ansible/galaxy/issues/52 11 | 12 | This short script queries the API, handles the pagination and returns a simple 13 | dictionary containing the names and versions. 14 | 15 | It looks like this (at the moment of writing):: 16 | 17 | $ get-galaxy-platforms.py 18 | { 19 | "AIX": { 20 | "name": "AIX", 21 | "versions": [ 22 | "6.1", 23 | "7.1", 24 | "7.2" 25 | ] 26 | }, 27 | "Alpine": { 28 | "name": "Alpine", 29 | "versions": [ 30 | "any" 31 | ] 32 | }, 33 | "Amazon": { 34 | "name": "Amazon", 35 | "versions": [ 36 | "2013.03", 37 | "2013.09", 38 | "2014.03", 39 | "2014.09", 40 | "2015.03", 41 | "2015.09", 42 | "2016.03", 43 | "2016.09", 44 | "2017.03", 45 | "2017.09", 46 | "2017.12", 47 | "2018.03", 48 | "Candidate" 49 | ] 50 | }, 51 | "Amazon Linux 2": { 52 | "name": "Amazon Linux 2", 53 | "versions": [ 54 | "any" 55 | ] 56 | }, 57 | "aos": { 58 | "name": "aos", 59 | "versions": [ 60 | "any" 61 | ] 62 | }, 63 | "ArchLinux": { 64 | "name": "ArchLinux", 65 | "versions": [ 66 | "any" 67 | ] 68 | }, 69 | "ClearLinux": { 70 | "name": "ClearLinux", 71 | "versions": [ 72 | "any" 73 | ] 74 | }, 75 | "Cumulus": { 76 | "name": "Cumulus", 77 | "versions": [ 78 | "2.5", 79 | "3.0", 80 | "3.1", 81 | "3.2", 82 | "3.3", 83 | "3.4", 84 | "3.5" 85 | ] 86 | }, 87 | "Debian": { 88 | "name": "Debian", 89 | "versions": [ 90 | "bookworm", 91 | "bullseye", 92 | "buster", 93 | "etch", 94 | "jessie", 95 | "lenny", 96 | "sid", 97 | "squeeze", 98 | "stretch", 99 | "wheezy" 100 | ] 101 | }, 102 | "DellOS": { 103 | "name": "DellOS", 104 | "versions": [ 105 | "10", 106 | "6", 107 | "9" 108 | ] 109 | }, 110 | "Devuan": { 111 | "name": "Devuan", 112 | "versions": [ 113 | "ascii", 114 | "beowulf", 115 | "ceres", 116 | "jessie" 117 | ] 118 | }, 119 | "DragonFlyBSD": { 120 | "name": "DragonFlyBSD", 121 | "versions": [ 122 | "5.2", 123 | "5.4" 124 | ] 125 | }, 126 | "EL": { 127 | "name": "EL", 128 | "versions": [ 129 | "5", 130 | "6", 131 | "7", 132 | "8", 133 | "9" 134 | ] 135 | }, 136 | "eos": { 137 | "name": "eos", 138 | "versions": [ 139 | "any" 140 | ] 141 | }, 142 | "Fedora": { 143 | "name": "Fedora", 144 | "versions": [ 145 | "16", 146 | "17", 147 | "18", 148 | "19", 149 | "20", 150 | "21", 151 | "22", 152 | "23", 153 | "24", 154 | "25", 155 | "26", 156 | "27", 157 | "28", 158 | "29", 159 | "30", 160 | "31", 161 | "32", 162 | "33", 163 | "34", 164 | "35", 165 | "36" 166 | ] 167 | }, 168 | "FreeBSD": { 169 | "name": "FreeBSD", 170 | "versions": [ 171 | "10.0", 172 | "10.1", 173 | "10.2", 174 | "10.3", 175 | "10.4", 176 | "11.0", 177 | "11.1", 178 | "11.2", 179 | "11.3", 180 | "12.0", 181 | "12.1", 182 | "8.0", 183 | "8.1", 184 | "8.2", 185 | "8.3", 186 | "8.4", 187 | "9.0", 188 | "9.1", 189 | "9.2", 190 | "9.3" 191 | ] 192 | }, 193 | "GenericBSD": { 194 | "name": "GenericBSD", 195 | "versions": [ 196 | "any" 197 | ] 198 | }, 199 | "GenericLinux": { 200 | "name": "GenericLinux", 201 | "versions": [ 202 | "any" 203 | ] 204 | }, 205 | "GenericUNIX": { 206 | "name": "GenericUNIX", 207 | "versions": [ 208 | "any" 209 | ] 210 | }, 211 | "Gentoo": { 212 | "name": "Gentoo", 213 | "versions": [ 214 | "any" 215 | ] 216 | }, 217 | "HardenedBSD": { 218 | "name": "HardenedBSD", 219 | "versions": [ 220 | "10", 221 | "11" 222 | ] 223 | }, 224 | "IOS": { 225 | "name": "IOS", 226 | "versions": [ 227 | "any" 228 | ] 229 | }, 230 | "Junos": { 231 | "name": "Junos", 232 | "versions": [ 233 | "any" 234 | ] 235 | }, 236 | "macOS": { 237 | "name": "macOS", 238 | "versions": [ 239 | "Big-Sur", 240 | "High-Sierra", 241 | "Sierra" 242 | ] 243 | }, 244 | "MacOSX": { 245 | "name": "MacOSX", 246 | "versions": [ 247 | "10.10", 248 | "10.11", 249 | "10.12", 250 | "10.13", 251 | "10.14", 252 | "10.15", 253 | "10.7", 254 | "10.8", 255 | "10.9" 256 | ] 257 | }, 258 | "NXOS": { 259 | "name": "NXOS", 260 | "versions": [ 261 | "any" 262 | ] 263 | }, 264 | "OpenBSD": { 265 | "name": "OpenBSD", 266 | "versions": [ 267 | "5.6", 268 | "5.7", 269 | "5.8", 270 | "5.9", 271 | "6.0", 272 | "6.1", 273 | "6.2", 274 | "6.3", 275 | "6.4", 276 | "6.5", 277 | "6.6", 278 | "6.7" 279 | ] 280 | }, 281 | "opensuse": { 282 | "name": "opensuse", 283 | "versions": [ 284 | "12.1", 285 | "12.2", 286 | "12.3", 287 | "13.1", 288 | "13.2", 289 | "15.0", 290 | "15.1", 291 | "15.2", 292 | "15.3", 293 | "42.1", 294 | "42.2", 295 | "42.3" 296 | ] 297 | }, 298 | "os10": { 299 | "name": "os10", 300 | "versions": [ 301 | "all", 302 | "any" 303 | ] 304 | }, 305 | "PAN-OS": { 306 | "name": "PAN-OS", 307 | "versions": [ 308 | "7.1", 309 | "8.0", 310 | "8.1", 311 | "9.0" 312 | ] 313 | }, 314 | "SLES": { 315 | "name": "SLES", 316 | "versions": [ 317 | "10SP3", 318 | "10SP4", 319 | "11", 320 | "11SP1", 321 | "11SP2", 322 | "11SP3", 323 | "11SP4", 324 | "12", 325 | "12SP1", 326 | "15" 327 | ] 328 | }, 329 | "SmartOS": { 330 | "name": "SmartOS", 331 | "versions": [ 332 | "any" 333 | ] 334 | }, 335 | "Solaris": { 336 | "name": "Solaris", 337 | "versions": [ 338 | "10", 339 | "11.0", 340 | "11.1", 341 | "11.2", 342 | "11.3" 343 | ] 344 | }, 345 | "Synology": { 346 | "name": "Synology", 347 | "versions": [ 348 | "any" 349 | ] 350 | }, 351 | "TMOS": { 352 | "name": "TMOS", 353 | "versions": [ 354 | "12.1", 355 | "13.0", 356 | "13.1", 357 | "14.0" 358 | ] 359 | }, 360 | "Ubuntu": { 361 | "name": "Ubuntu", 362 | "versions": [ 363 | "artful", 364 | "bionic", 365 | "cosmic", 366 | "cuttlefish", 367 | "disco", 368 | "eoan", 369 | "focal", 370 | "groovy", 371 | "hirsute", 372 | "impish", 373 | "lucid", 374 | "maverick", 375 | "natty", 376 | "oneiric", 377 | "precise", 378 | "quantal", 379 | "raring", 380 | "saucy", 381 | "trusty", 382 | "utopic", 383 | "vivid", 384 | "wily", 385 | "xenial", 386 | "yakkety", 387 | "zesty" 388 | ] 389 | }, 390 | "vCenter": { 391 | "name": "vCenter", 392 | "versions": [ 393 | "5.5", 394 | "6.0", 395 | "6.5", 396 | "6.7" 397 | ] 398 | }, 399 | "Void Linux": { 400 | "name": "Void Linux", 401 | "versions": [ 402 | "any" 403 | ] 404 | }, 405 | "vSphere": { 406 | "name": "vSphere", 407 | "versions": [ 408 | "5.5", 409 | "6.0", 410 | "6.5", 411 | "6.7" 412 | ] 413 | }, 414 | "Windows": { 415 | "name": "Windows", 416 | "versions": [ 417 | "2008R2", 418 | "2008x64", 419 | "2008x86", 420 | "2012", 421 | "2012R2", 422 | "2016", 423 | "2019" 424 | ] 425 | } 426 | } 427 | --------------------------------------------------------------------------------