Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package availability #1004

Merged
merged 3 commits into from
Jan 19, 2024

Conversation

joseivanlopez
Copy link
Contributor

@joseivanlopez joseivanlopez commented Jan 17, 2024

Problem

The call to the sotware service to check for the availability of a package is mocked and always returns true, assuming the package is always available. Of course, the availability of a package depends of the currently selected product.

Solution

Perform a D-Bus call to the software service in order to know if a package is available.

Note: This change exposes a problem in our services. Asking for the product availability should be done once the software proposal is done, otherwise the result is not reliable at all, see #1005. For example, the TPM option in the storage settings could not appear until the software service has finished, see #995.

Testing

  • Added new unit tests
  • Tested manually

@coveralls
Copy link

coveralls commented Jan 17, 2024

Coverage Status

coverage: 74.906% (+0.01%) from 74.893%
when pulling f827b72 on joseivanlopez:package-available
into 84c27d4 on openSUSE:master.

@joseivanlopez joseivanlopez marked this pull request as ready for review January 18, 2024 15:15
Copy link
Contributor

@dgdavid dgdavid left a comment

Choose a reason for hiding this comment

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

LGTM

@joseivanlopez joseivanlopez merged commit d516f74 into agama-project:master Jan 19, 2024
3 checks passed
# @return [Boolean]
def package_available?(name)
# Beware: apart from true and false, Available can return nil if things go wrong.
on_local { !!Yast::Package.Available(name) }
Copy link
Contributor

Choose a reason for hiding this comment

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

Be careful that Yast::Package.Available checks for the RPM Provides. That means the package name might not be available, but if there is some other package providing it then it will return true.

So it depends what we actually expect from the API. Maybe have two separate calls? One for package name and the other for provides?

This could cause some unexpected problems later...

@imobachgs imobachgs mentioned this pull request Feb 12, 2024
@imobachgs imobachgs mentioned this pull request May 17, 2024
imobachgs added a commit that referenced this pull request May 17, 2024
Prepare for releasing Agama 8. It includes the following pull requests:

* #884
* #886
* #914
* #918
* #956
* #957
* #958
* #959
* #960
* #961
* #962
* #963
* #964
* #965
* #966
* #969
* #970
* #976
* #977
* #978
* #979
* #980
* #981
* #983
* #984
* #985
* #986
* #988
* #991
* #992
* #995
* #996
* #997
* #999
* #1003
* #1004
* #1006
* #1007
* #1008
* #1009
* #1010
* #1011
* #1012
* #1014
* #1015
* #1016
* #1017
* #1020
* #1022
* #1023
* #1024
* #1025
* #1027
* #1028
* #1029
* #1030
* #1031
* #1032
* #1033
* #1034
* #1035
* #1036
* #1038
* #1039
* #1041
* #1042
* #1043
* #1045
* #1046
* #1047
* #1048
* #1052
* #1054
* #1056
* #1057
* #1060
* #1061
* #1062
* #1063
* #1064
* #1066
* #1067
* #1068
* #1069
* #1071
* #1072
* #1073
* #1074
* #1075
* #1079
* #1080
* #1081
* #1082
* #1085
* #1086
* #1087
* #1088
* #1089
* #1090
* #1091
* #1092
* #1093
* #1094
* #1095
* #1096
* #1097
* #1098
* #1099
* #1100
* #1102
* #1103
* #1104
* #1105
* #1106
* #1109
* #1110
* #1111
* #1112
* #1114
* #1116
* #1117
* #1118
* #1119
* #1120
* #1121
* #1122
* #1123
* #1125
* #1126
* #1127
* #1128
* #1129
* #1130
* #1131
* #1132
* #1133
* #1134
* #1135
* #1136
* #1138
* #1139
* #1140
* #1141
* #1142
* #1143
* #1144
* #1145
* #1146
* #1147
* #1148
* #1149
* #1151
* #1152
* #1153
* #1154
* #1155
* #1156
* #1157
* #1158
* #1160
* #1161
* #1162
* #1163
* #1164
* #1165
* #1166
* #1167
* #1168
* #1169
* #1170
* #1171
* #1172
* #1173
* #1174
* #1175
* #1177
* #1178
* #1180
* #1181
* #1182
* #1183
* #1184
* #1185
* #1187
* #1188
* #1189
* #1190
* #1191
* #1192
* #1193
* #1194
* #1195
* #1196
* #1198
* #1199
* #1200
* #1201
* #1203
* #1204
* #1205
* #1206
* #1207
* #1208
* #1209
* #1210
* #1211
* #1212
* #1213
* #1214
* #1215
* #1216
* #1217
* #1219
* #1220
* #1221
* #1222
* #1223
* #1224
* #1225
* #1226
* #1227
* #1229
joseivanlopez added a commit that referenced this pull request May 21, 2024
### Problem

The value of the D-Bus properties *ProductMountPoints* and
*EncryptionMethods* from the interface
*org.opensuse.Agama.Storage1.Proposal.Calculator* depend on the selected
product. Nevertheless, the *PropertiesChanged* signal is not emitted
when the product changes. Therefore, proxies clients never update such
values.

This implies that the option for FDE (Full Disk Encryption) might not be
shown. See #1004.

### Solution

* For the *ProductMountPoints* property: emit a *PropertiesChanged*
signal when the product changes.
* For the *EncryptionMethods* property: emit a *PropertiesChaged* signal
when software is probed. Note that the availability of certain packages
is checked in order to know whether FDE is a possible encryption method.
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.

4 participants