@@ -15,7 +15,23 @@ var generateCmd = &cobra.Command{
1515 Use : "generate" ,
1616 Short : "Generate a config_db.json" ,
1717 Run : func (cmd * cobra.Command , args []string ) {
18- platformFile , _ := cmd .Flags ().GetString ("platform" )
18+ configDBFile , _ := cmd .Flags ().GetString ("output" )
19+ configDBBytes , err := os .ReadFile (configDBFile )
20+ if err != nil {
21+ fmt .Printf ("failed to read current config file, %v\n " , err )
22+ os .Exit (1 )
23+ }
24+
25+ currentConfig , err := configdb .UnmarshalConfigDB (configDBBytes )
26+ if err != nil {
27+ fmt .Printf ("failed to parse current config file, %v\n " , err )
28+ os .Exit (1 )
29+ }
30+
31+ platformIdentifier := currentConfig .DeviceMetadata .Localhost .Platform
32+ deviceDir , _ := cmd .Flags ().GetString ("device-dir" )
33+ platformFile := fmt .Sprintf ("%s/%s/platform.json" , deviceDir , platformIdentifier )
34+
1935 platformBytes , err := os .ReadFile (platformFile )
2036 if err != nil {
2137 fmt .Printf ("failed to read platform.json file: %v\n " , err )
@@ -41,32 +57,19 @@ var generateCmd = &cobra.Command{
4157 os .Exit (1 )
4258 }
4359
44- configDBFile , _ := cmd .Flags ().GetString ("output" )
45- configDBBytes , err := os .ReadFile (configDBFile )
46- if err != nil {
47- fmt .Printf ("failed to read current config file, %v\n " , err )
48- os .Exit (1 )
49- }
50-
51- currentConfig , err := configdb .UnmarshalConfigDB (configDBBytes )
52- if err != nil {
53- fmt .Printf ("failed to parse current config file, %v\n " , err )
54- os .Exit (1 )
55- }
56-
5760 configDB , err := configdb .GenerateConfigDB (values , platform , currentConfig .DeviceMetadata )
5861 if err != nil {
5962 fmt .Printf ("failed to generate config, %v\n " , err )
6063 os .Exit (1 )
6164 }
6265
63- configBytes , err : = json .MarshalIndent (configDB , "" , " " )
66+ configDBBytes , err = json .MarshalIndent (configDB , "" , " " )
6467 if err != nil {
6568 fmt .Printf ("failed to serialize json, %v\n " , err )
6669 os .Exit (1 )
6770 }
6871
69- err = os .WriteFile (configDBFile , configBytes , 0644 ) //nolint:gosec
72+ err = os .WriteFile (configDBFile , configDBBytes , 0644 ) //nolint:gosec
7073 if err != nil {
7174 fmt .Printf ("failed to write file, %v" , err )
7275 os .Exit (1 )
@@ -79,5 +82,5 @@ func init() {
7982
8083 generateCmd .Flags ().StringP ("input" , "i" , "sonic-config.yaml" , "path to input file to generate the config_db.json from" )
8184 generateCmd .Flags ().StringP ("output" , "o" , "/etc/sonic/config_db.json" , "path to output file" )
82- generateCmd .Flags ().StringP ( "platform " , "p" , " /usr/share/sonic/platform/platform.json " , "path to platform.json " )
85+ generateCmd .Flags ().String ( "device-dir " , "/usr/share/sonic/device " , "directory which holds all device-specific files " )
8386}
0 commit comments