BIOS: Fix readOnly BIOS attributes

Previously, the readOnly property is true when without a D-Bus section in BIOS
JSON. Now, the readOnly property should be determined by a new readOnly field,
which should be introduced in the JSON. The checks are updated to ensure that
if there is D-Bus mapping then only D-Bus lookups are done.

Tested: test with json
https://gist.github.com/lxwinspur/2afffff2e445fddf90dfed6eceef4014

busctl get-property xyz.openbmc_project.BIOSConfigManager
/xyz/openbmc_project/bios_config/manager xyz.openbmc_project.BIOSConfig.Manager
BaseBIOSTable

a{s(sbsssvva(sv))} 5
"CodeUpdatePolicy"
"xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Enumeration"
true "" "" "" s "Concurrent" s "Concurrent" 2
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.OneOf" s "Concurrent"
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.OneOf" s "Disruptive"

"Led"
"xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Enumeration"
false "" "" "" s "Off" s "Off" 2
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.OneOf" s "On"
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.OneOf" s "Off"

"Model"
"xyz.openbmc_project.BIOSConfig.Manager.AttributeType.String"
false "" "" "" s "powersupply0" s "FP5280G2" 2
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.MinStringLength" x 1
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.MaxStringLength" x 100

"OUTLET"
"xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Integer"
false "" "" "" x 9149282306036291456 x 0 3
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.LowerBound" x 0
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.UpperBound" x 68002
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.ScalarIncrement" x 1

"str_example3"
"xyz.openbmc_project.BIOSConfig.Manager.AttributeType.String"
true "" "" "" s "ef" s "ef" 2
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.MinStringLength" x 1
"xyz.openbmc_project.BIOSConfig.Manager.BoundType.MaxStringLength" x 100

Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I73d2dcb9fc65a1aa8bbd060cfb9d44e708b47aae
diff --git a/test/bios_jsons/enum_attrs.json b/test/bios_jsons/enum_attrs.json
index 24c20ff..5ad3ad2 100644
--- a/test/bios_jsons/enum_attrs.json
+++ b/test/bios_jsons/enum_attrs.json
@@ -4,6 +4,7 @@
          "attribute_name" : "HMCManagedState",
          "possible_values" : [ "On", "Off" ],
          "default_values" : [ "On" ],
+         "readOnly" : false,
          "dbus":
             {
                "object_path" : "/xyz/abc/def",
@@ -17,6 +18,7 @@
          "attribute_name" : "FWBootSide",
          "possible_values" : [ "Perm", "Temp" ],
          "default_values" : [ "Perm" ],
+         "readOnly" : false,
          "dbus":
             {
                "object_path" : "/xyz/abc/def",
@@ -30,6 +32,7 @@
          "attribute_name" : "InbandCodeUpdate",
          "possible_values" : [ "Allowed", "NotAllowed" ],
          "default_values" : [ "Allowed" ],
+         "readOnly" : false,
          "dbus":
             {
                "object_path" : "/xyz/abc/def",
@@ -42,7 +45,8 @@
       {
          "attribute_name" : "CodeUpdatePolicy",
          "possible_values" : [ "Concurrent", "Disruptive" ],
-         "default_values" : [ "Concurrent" ]
+         "default_values" : [ "Concurrent" ],
+         "readOnly" : true
       }
     ]
 }
diff --git a/test/bios_jsons/integer_attrs.json b/test/bios_jsons/integer_attrs.json
index b99a88b..576433e 100644
--- a/test/bios_jsons/integer_attrs.json
+++ b/test/bios_jsons/integer_attrs.json
@@ -6,6 +6,7 @@
          "upper_bound" : 15,
          "scalar_increment" : 1,
          "default_value" : 0,
+         "readOnly" : false,
          "dbus":{
             "object_path" : "/xyz/openbmc_project/avsbus",
             "interface" : "xyz.openbmc.AvsBus.Manager",
@@ -18,14 +19,16 @@
          "lower_bound" : 1,
          "upper_bound" : 15,
          "scalar_increment" : 1,
-         "default_value" : 2
+         "default_value" : 2,
+         "readOnly" : true
       },
       {
          "attribute_name" : "INTEGER_INVALID_CASE",
          "lower_bound" : 1,
          "upper_bound" : 15,
          "scalar_increment" : 2,
-         "default_value" : 3
+         "default_value" : 3,
+         "readOnly" : true
       }
    ]
 }
diff --git a/test/bios_jsons/string_attrs.json b/test/bios_jsons/string_attrs.json
index 6133412..e5b3920 100644
--- a/test/bios_jsons/string_attrs.json
+++ b/test/bios_jsons/string_attrs.json
@@ -7,6 +7,7 @@
             "maximum_string_length" : 100,
             "default_string_length" : 3,
             "default_string" : "abc",
+            "readOnly" : false,
             "dbus" : {
                 "object_path" : "/xyz/abc/def",
                 "interface" : "xyz.openbmc_project.str_example1.value",
@@ -21,6 +22,7 @@
             "maximum_string_length" : 100,
             "default_string_length" : 0,
             "default_string" : "",
+            "readOnly" : false,
             "dbus" : {
                 "object_path" : "/xyz/abc/def",
                 "interface" : "xyz.openbmc_project.str_example2.value",
@@ -34,7 +36,8 @@
             "minimum_string_length" : 1,
             "maximum_string_length" : 100,
             "default_string_length" : 2,
-            "default_string" : "ef"
+            "default_string" : "ef",
+            "readOnly" : true
         }
     ]
 }