{
  "_class" : "hudson.matrix.MatrixBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "BRANCH",
          "value" : "master"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "EMAIL_NOTIFICATIONS",
          "value" : "jenkins-notifications@lists.osmocom.org laforge@gnumonks.org"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 0,
      "buildableTimeMillis" : 0,
      "buildingDurationMillis" : 835679,
      "executingTimeMillis" : 835679,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 8433,
      "waitingTimeMillis" : 8433
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1880,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
            "branch" : [
              {
                "SHA1" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
            "branch" : [
              {
                "SHA1" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/ara-m" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1320,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
            "branch" : [
              {
                "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
                "name" : "refs/remotes/origin/pmaier/ara-m"
              }
            ]
          },
          "revision" : {
            "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
            "branch" : [
              {
                "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
                "name" : "refs/remotes/origin/pmaier/ara-m"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/keepfiles" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1353,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
            "branch" : [
              {
                "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
                "name" : "refs/remotes/origin/pmaier/keepfiles"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
            "branch" : [
              {
                "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
                "name" : "refs/remotes/origin/pmaier/keepfiles"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/fixapdu" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1421,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
            "branch" : [
              {
                "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
                "name" : "refs/remotes/origin/pmaier/fixapdu"
              }
            ]
          },
          "revision" : {
            "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
            "branch" : [
              {
                "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
                "name" : "refs/remotes/origin/pmaier/fixapdu"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/aramtest" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1467,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
            "branch" : [
              {
                "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
                "name" : "refs/remotes/origin/pmaier/aramtest"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
            "branch" : [
              {
                "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
                "name" : "refs/remotes/origin/pmaier/aramtest"
              }
            ]
          }
        },
        "refs/remotes/origin/osmith/wip" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1816,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
            "branch" : [
              {
                "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
            "branch" : [
              {
                "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 402,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
            "branch" : [
              {
                "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
            "branch" : [
              {
                "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
        "branch" : [
          {
            "SHA1" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/pysim"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#1880",
  "duration" : 835679,
  "estimatedDuration" : 835327,
  "executor" : None,
  "fullDisplayName" : "master-pysim #1880",
  "id" : "1880",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 1880,
  "queueId" : 2052556,
  "result" : "SUCCESS",
  "timestamp" : 1764128409112,
  "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-pysim/1880/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim-shell.py"
        ],
        "commitId" : "08565e8a98f616b57d63dfd4043f47a87a1064dd",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "pySim-shell: use log level INFO by default\u000a\u000aThe default log level of the PySimLogger is DEBUG by default. This is\u000ato ensure that all messages are printed in an unconfigured setup.\u000a\u000aHowever in pySim-Shell we care about configuring the logger, so let's\u000aset the debug log level to INFO in startup. This will allow us to\u000aturn debug messages on and off using the verbose switch.\u000a\u000aChange-Id: I89315f830ce1cc2d573887de4f4cf4e19d17543b\u000aRelated: SYS#7725\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "08565e8a98f616b57d63dfd4043f47a87a1064dd",
        "msg" : "pySim-shell: use log level INFO by default",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim-shell.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_card_key_provider.py",
          "pySim/card_key_provider.py",
          "contrib/csv-encrypt-columns.py"
        ],
        "commitId" : "4550574e032a675cf1030cbe2eb7c9fd7a293147",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: separate and refactor CSV column encryption\u000a\u000aThe CardKeyProviderCsv class implements a column decryption scheme\u000awhere columns are protected using a transport key. The CSV files\u000aare enrcypted using contrib/csv-encrypt-columns.py.\u000a\u000aThe current implementation has two main problems:\u000a\u000a- The decryption code in CardKeyProviderCsv is not specific to CSV files.\u000a  It could be re-used in other formats, for example to decrypt columns\u000a  (fields) red from a database. So let's split the decryption code in a\u000a  separate class.\u000a\u000a- The encryption code in csv-encrypt-columns.py accesses methods and\u000a  properties in CardKeyProviderCsv. Also having the coresponding\u000a  encryption code somewhere out of tree may be confusing. Let's improve\u000a  the design and put encryption and decryption functions in a single\u000a  class. Let's also make sure the encryption/decryption is covered by\u000a  unittests.\u000a\u000aRelated: SYS#7725\u000aChange-Id: I180457d4938f526d227c81020e4e03c6b3a57dab\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "4550574e032a675cf1030cbe2eb7c9fd7a293147",
        "msg" : "card_key_provider: separate and refactor CSV column encryption",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          },
          {
            "editType" : "edit",
            "file" : "contrib/csv-encrypt-columns.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_card_key_provider.py",
          "pySim/card_key_provider.py"
        ],
        "commitId" : "e80f96cc3bc44450ba47d9e71e3dd8086b969066",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: use case-insensitive field names\u000a\u000aIt is common in CSV files that the columns have uppercase names, so we\u000ahave adopted this scheme when we started using the card_key_provider.\u000a\u000aThis also means that the API of the card_key_provider_get() and\u000acard_key_provider_get_field() function now implicitly requires\u000auppercase field names like 'ICCID', 'ADM1', etc.\u000a\u000aUnfortunately this may be unreliable, so let's convert the field\u000anames to uppercase as soon as we receive them. This makes the API\u000acase-insensitive and gives us the assurance that all field names\u000awe ever work with are in uppercase.\u000a\u000aRelated: SYS#7725\u000aChange-Id: I9d80752587e2ccff0963c10abd5a2f42f5868d79\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "e80f96cc3bc44450ba47d9e71e3dd8086b969066",
        "msg" : "card_key_provider: use case-insensitive field names",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_card_key_provider.py"
          },
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/card_key_provider.py"
        ],
        "commitId" : "bcca2bffc26558ee42071cb28183af6c7efaa8c3",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: rename parameter filename to csv_filename\u000a\u000alet's rename the parameter filename to csv_filename to make it\u000amore clear to what kind of file this parameter refers.\u000a\u000aChange-Id: Id5b7c61b5e72fb205e30d2787855b2c276840a7b\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "bcca2bffc26558ee42071cb28183af6c7efaa8c3",
        "msg" : "card_key_provider: rename parameter filename to csv_filename",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/card_key_provider.py"
        ],
        "commitId" : "a6ca5b7cd107a00f5bfb993fae728c15ebb3a2ce",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: remove unnecessary class property definitions\u000a\u000aThe two properties csv_file and csv_filename are defined by the\u000aconstructor anyway, let's remove the declaration in the class body\u000abecause it is not needed.\u000a\u000aChange-Id: Ibbe8e17b03a4ba0041c0e9990a5e9614388d9c03\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "a6ca5b7cd107a00f5bfb993fae728c15ebb3a2ce",
        "msg" : "card_key_provider: remove unnecessary class property definitions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim-shell.py"
        ],
        "commitId" : "01a6724153bea16813a463670797e1bd796c1dae",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "pySim-shell: add command to manually query the Card Key Provider\u000a\u000aThe Card Key Provider is a built in mechanism of pySim-shell which\u000aallows the user to read key material from a CSV file in order to\u000aavoid having to lookup and enter the key material himself. The\u000alookup normally done by the pySim-shell commands automatically.\u000a\u000aHowever, in some cases it may also be useful to be able to query the\u000aCSV file manually in order to get certain fields displayed. Such a\u000acommand is in particular helpful to check and diagnose the CSV data\u000asource.\u000a\u000aRelated: SYS#7725\u000aChange-Id: I76e0f883572a029bdca65a5a6b3eef306db1c221\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "01a6724153bea16813a463670797e1bd796c1dae",
        "msg" : "pySim-shell: add command to manually query the Card Key Provider",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim-shell.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim-shell.py"
        ],
        "commitId" : "4a7651eb65b24f862169161c47fbad81bfd154e9",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "pySim-shell: re-organize Card Key Provider related options\u000a\u000aAs we plan to support other formats as data source for the Card Key\u000aProvider soon, the more commandline options may be added and it makes\u000asense to group the Card Key Provider options in a dedicated group.\u000a\u000aLet's also rename the option \"--csv-column-key\" to just \"--column-key\".\u000aThe column encryption is a generic concept and not CSV format specific.\u000a(let's silently keep the \"--csv-column-key\" argument so maintain backward\u000acompatibility)\u000a\u000aRelated: SYS#7725\u000aChange-Id: I5093f8383551f8c9b84342ca6674c1ebdbbfc19c\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "4a7651eb65b24f862169161c47fbad81bfd154e9",
        "msg" : "pySim-shell: re-organize Card Key Provider related options",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim-shell.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/card_key_provider.py"
        ],
        "commitId" : "579214c4d01ab07f3cec689f72063082a3d67ff0",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: remove method _verify_get_data from base class\u000a\u000aThe method _verify_get_data was intended to be used to verify the\u000auser input before it further processed but ended up to be a simple\u000acheck that only checks the name of the key column very basically.\u000a\u000aUnfortunately it is difficult to generalize the check code as the\u000aconcrete implementation of those checks is highly format dependent.\u000aWith the advent of eUICCs, we now have two data formats with\u000adifferent lookup keys, so a static list with valid lookup keys is\u000aalso no longer up to the task.\u000a\u000aAfter all it makes not much sense to keep this method, so let's\u000aremove it.\u000a\u000a(From the technical perspective, the key column is not limitied to\u000aany specif field. In theory it would even be possible to use the KI\u000aas lookup key as well, even though it would not make sense in\u000apractice)\u000a\u000aRelated: SYS#7725\u000aChange-Id: Ibf5745fb8a4f927397adff33900731524715d6a9\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "579214c4d01ab07f3cec689f72063082a3d67ff0",
        "msg" : "card_key_provider: remove method _verify_get_data from base class",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/card_key_provider.py"
        ],
        "commitId" : "61541e7502bdabb265e29a03e0f6f84f52aeb5d3",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: refactor code and optimize out get_field method\u000a\u000aThe method get_field in the base class can be optimized out. This\u000aalso allows us to remove code dup in the card_key_provider_get_field\u000afunction.\u000a\u000aLet's also fix the return code behavior. A get method in a\u000aCardKeyProvider implementation should always return None in case\u000anothing is found. Also it should not crash in that case. This will\u000aallow the card_key_provider_get function to move on to the next\u000aCardKeyProvider. In case no CardKeyProvider yields any results, an\u000aexception is appropriate since it is pointless to continue execution\u000awith \"None\" as key material.\u000a\u000aTo make the debugging of problems easier, let's also print some debug\u000amessages that inform the user what key/value pair and which\u000aCardKeyProvider was queried. This will make it easier to investigate\u000ain case an expected result was not found.\u000a\u000aRelated: SYS#7725\u000aChange-Id: I4d6367b8eb057e7b2c06c8625094d8a1e4c8eef9\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "61541e7502bdabb265e29a03e0f6f84f52aeb5d3",
        "msg" : "card_key_provider: refactor code and optimize out get_field method",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/card_key_provider.py"
        ],
        "commitId" : "c2fb84251b9b1440e48eee083782bfd9c28b7aac",
        "timestamp" : 1763743749000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: add missing type annotation\u000a\u000aRelated: SYS#7725\u000aChange-Id: I45751d2b31976c04c03006d8baa195eef2576b4f\u000a",
        "date" : "2025-11-21 17:49:09 +0100",
        "id" : "c2fb84251b9b1440e48eee083782bfd9c28b7aac",
        "msg" : "card_key_provider: add missing type annotation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "docs/conf.py"
        ],
        "commitId" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
        "timestamp" : 1764087294000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "docs/conf.py: update copyright year\u000a\u000aThe copyright year of the docs is still at 2023, let's update it\u000ato the current year.\u000a\u000aChange-Id: Icf64670847d090a250f732d94d18e780e483239b\u000a",
        "date" : "2025-11-25 17:14:54 +0100",
        "id" : "3f3f4e20e2fc1b196ce294d46a1df668a0663933",
        "msg" : "docs/conf.py: update copyright year",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "docs/conf.py"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
      "fullName" : "pmaier@sysmocom.de"
    }
  ],
  "runs" : [
    {
      "number" : 1880,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-pysim/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-master/1880/"
    },
    {
      "number" : 1880,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-pysim/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-master/1880/"
    },
    {
      "number" : 1880,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-pysim/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/1880/"
    }
  ]
}