Skip to content

Support for registering the base system#2978

Merged
imobachgs merged 7 commits intoapi-v2from
registration
Dec 31, 2025
Merged

Support for registering the base system#2978
imobachgs merged 7 commits intoapi-v2from
registration

Conversation

@imobachgs
Copy link
Copy Markdown
Contributor

@imobachgs imobachgs commented Dec 30, 2025

This PR implements initial support for products and extensions registration. It has a few limitations that should be addressed in separate pull requests:

  • The web UI is not adapted.
  • It does not allow to register extensions (only the base product). However, the logic to activate them is already implemented.
  • It does not copy the credentials at the end of the installation.
  • It does not handle certificates.
  • It does not support proxies or specific URLs (from kernel's command-line).
  • It always uses "en-us" as language.
  • (optional) Although not needed by the UI, we could expose the list of added services in the system information object.

System information

The registration information is exposed through the /api/v2/system end-point.

{
  "software": {
    "patterns": [],
    "repositories": [],
    "registration": {
      "code": "XXXXXXXXXXXXXXXX",
      "email": null,
      "url": "https://scc.suse.com/",
      "addons": [
        {
          "id": "sle-ha",
          "version": "16.1",
          "label": "SUSE Linux Enterprise High Availability Extension 16.1 x86_64 (ALPHA)",
          "available": true,
          "free": false,
          "recommended": false,
          "description": "SUSE Linux High Availability Extension provides mature, industry-leading open-source high-availability clustering technologies that are easy to set up and use. It can be deployed in physical and/or virtual environments, and can cluster physical servers, virtual servers, or any combination of the two to suit the needs of your business.",
          "type": "extension",
          "release": "alpha"
        },
        {
          "id": "PackageHub",
          "version": "16.1",
          "label": "SUSE Package Hub 16.1 x86_64",
          "available": true,
          "free": true,
          "recommended": false,
          "description": "SUSE Package Hub is a free-of-charge module providing access to community-maintained packages built to run on SUSE Linux Enterprise Server. Built from the same sources used in openSUSE distributions, these quality packages provide additional software to what is found in the SUSE Linux Enterprise Server product. The packages in this module are delivered without L3 support but do not interfere with the supportability of SUSE Linux Enterprise Server.",
          "type": "extension",
          "release": "released"
        }
      ]
    }
  }
}

NOTE: at this point the type property is always "extension" because it is not exposed by our bindings.

Issues

When the system cannot be registered, Agama will create an issue indicating the problem:

[
  {
    "scope": "software",
    "class": "software.register_system",
    "description": "Failed to register the system",
    "details": "Unknown Registration Code."
  }
]

@jreidinger
Copy link
Copy Markdown
Contributor

@imobachgs I discuss that type with @lslezak and for SLE16 it does not make sense as we do not have other types there. So question is if we need to expose it at all.

fn product_specification(id: &str, version: &str) -> suseconnect_agama::ProductSpecification {
suseconnect_agama::ProductSpecification {
identifier: id.to_string(),
arch: std::env::consts::ARCH.to_string(),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are you sure that it will match all rpm archs that suse connect uses?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. Actually, the pcc64le does not match (it uses powerpc64 instead). As we will need to do more conversion, I added a new Arch enum that allows finding the current architecture and brings the possibility of adding conversions to it.

@imobachgs imobachgs merged commit 3498d9e into api-v2 Dec 31, 2025
15 checks passed
@imobachgs imobachgs deleted the registration branch December 31, 2025 11:08
imobachgs added a commit that referenced this pull request Jan 8, 2026
Follow-up of #2978.

This PR adds support, at HTTP API level, for registering add-ons.
Additionally, it exposes such information as part of the
`/api/v2/system` resource.

Additionally, this PR makes sure that the services are refreshed after
adding them.

## Notes

* The representation of the add-on status might be improved. But we can
postpone it a little (while adapting the UI).
imobachgs added a commit that referenced this pull request Jan 10, 2026
Merge the new HTTP API. Each PR has been already reviewed, so it should
be safe to merge it.

* #1829
* #2508
* #2772
* #2826
* #2848
* #2860
* #2863
* #2866
* #2867
* #2869
* #2870
* #2871
* #2872
* #2873
* #2874
* #2875
* #2876
* #2877
* #2880
* #2881
* #2882
* #2884
* #2885
* #2886
* #2891
* #2892
* #2893
* #2894
* #2895
* #2896
* #2897
* #2898
* #2899
* #2900
* #2901
* #2902
* #2903
* #2904
* #2908
* #2909
* #2910
* #2912
* #2913
* #2914
* #2915
* #2916
* #2917
* #2918
* #2920
* #2921
* #2923
* #2924
* #2926
* #2928
* #2929
* #2930
* #2933
* #2934
* #2935
* #2936
* #2938
* #2939
* #2942
* #2943
* #2944
* #2945
* #2946
* #2947
* #2948
* #2950
* #2951
* #2952
* #2954
* #2955
* #2956
* #2957
* #2958
* #2959
* #2960
* #2961
* #2963
* #2964
* #2965
* #2967
* #2968
* #2969
* #2970
* #2971
* #2972
* #2974
* #2975
* #2977
* #2978
* #2980
* #2982
* #2983
* #2984
* #2988
* #2989
* #2991
* #2992
* #2993
* #2994
* #2995
* #2996
* #2997
* #2999
@imobachgs imobachgs mentioned this pull request Mar 17, 2026
imobachgs added a commit that referenced this pull request Mar 17, 2026
Prepare to release version 19.

* #1829
* #2508
* #2772
* #2818
* #2826
* #2848
* #2860
* #2863
* #2864
* #2866
* #2867
* #2869
* #2870
* #2871
* #2872
* #2873
* #2874
* #2875
* #2876
* #2877
* #2880
* #2881
* #2882
* #2884
* #2885
* #2886
* #2891
* #2892
* #2893
* #2894
* #2895
* #2896
* #2897
* #2898
* #2899
* #2900
* #2901
* #2902
* #2903
* #2904
* #2908
* #2909
* #2910
* #2912
* #2913
* #2914
* #2915
* #2916
* #2917
* #2918
* #2920
* #2921
* #2923
* #2924
* #2926
* #2928
* #2929
* #2930
* #2933
* #2934
* #2935
* #2936
* #2937
* #2938
* #2939
* #2942
* #2943
* #2944
* #2945
* #2946
* #2947
* #2948
* #2949
* #2950
* #2951
* #2952
* #2954
* #2955
* #2956
* #2957
* #2958
* #2959
* #2960
* #2961
* #2963
* #2964
* #2965
* #2967
* #2968
* #2969
* #2970
* #2971
* #2972
* #2974
* #2975
* #2977
* #2978
* #2980
* #2981
* #2982
* #2983
* #2984
* #2988
* #2989
* #2990
* #2991
* #2992
* #2993
* #2994
* #2995
* #2996
* #2997
* #2998
* #2999
* #3000
* #3001
* #3002
* #3004
* #3005
* #3006
* #3007
* #3008
* #3009
* #3011
* #3012
* #3013
* #3014
* #3015
* #3016
* #3018
* #3019
* #3020
* #3021
* #3022
* #3023
* #3024
* #3025
* #3026
* #3027
* #3028
* #3029
* #3030
* #3031
* #3033
* #3034
* #3035
* #3036
* #3037
* #3039
* #3040
* #3041
* #3042
* #3043
* #3044
* #3045
* #3046
* #3047
* #3048
* #3049
* #3050
* #3051
* #3052
* #3053
* #3054
* #3055
* #3056
* #3057
* #3058
* #3060
* #3061
* #3062
* #3063
* #3064
* #3065
* #3066
* #3067
* #3068
* #3069
* #3070
* #3071
* #3072
* #3073
* #3074
* #3075
* #3076
* #3077
* #3078
* #3079
* #3086
* #3087
* #3088
* #3089
* #3090
* #3091
* #3092
* #3093
* #3094
* #3095
* #3096
* #3097
* #3098
* #3099
* #3100
* #3101
* #3102
* #3103
* #3104
* #3105
* #3106
* #3107
* #3108
* #3109
* #3110
* #3112
* #3113
* #3114
* #3115
* #3116
* #3117
* #3118
* #3119
* #3120
* #3122
* #3123
* #3124
* #3127
* #3128
* #3129
* #3130
* #3131
* #3133
* #3134
* #3135
* #3136
* #3137
* #3138
* #3139
* #3140
* #3141
* #3142
* #3143
* #3144
* #3145
* #3146
* #3147
* #3148
* #3149
* #3150
* #3151
* #3152
* #3153
* #3154
* #3155
* #3157
* #3158
* #3159
* #3160
* #3161
* #3162
* #3163
* #3164
* #3165
* #3166
* #3167
* #3168
* #3169
* #3170
* #3174
* #3175
* #3176
* #3177
* #3178
* #3179
* #3181
* #3182
* #3184
* #3185
* #3186
* #3188
* #3189
* #3190
* #3191
* #3192
* #3194
* #3195
* #3196
* #3197
* #3198
* #3199
* #3200
* #3201
* #3202
* #3203
* #3205
* #3206
* #3208
* #3209
* #3210
* #3213
* #3214
* #3215
* #3216
* #3217
* #3218
* #3219
* #3220
* #3222
* #3223
* #3224
* #3225
* #3226
* #3227
* #3228
* #3229
* #3230
* #3231
* #3232
* #3233
* #3234
* #3235
* #3236
* #3237
* #3238
* #3239
* #3240
* #3241
* #3242
* #3243
* #3244
* #3246
* #3247
* #3248
* #3250
* #3251
* #3252
* #3253
* #3254
* #3255
* #3256
* #3257
* #3258
* #3259
* #3260
* #3261
* #3262
* #3263
* #3265
* #3266
* #3267
* #3268
* #3269
* #3270
* #3271
* #3272
* #3273
* #3274
* #3275
* #3276
* #3277
* #3278
* #3279
* #3280
* #3281
* #3282
* #3283
* #3284
* #3285
* #3286
* #3287
* #3288
* #3289
* #3290
* #3291
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants