@@ -1691,26 +1691,7 @@ func (m *Meta) stateStore_C_s(c *configs.StateStore, cHash int, backendSMgr *cli
16911691
16921692 // TODO: Confirm if defaulting to creation on first use (rather than error) is a good idea
16931693 // Make the default workspace. All other workspaces are user-created via the workspace commands.
1694- defaultSMgr , sDiags := b .StateMgr (backend .DefaultStateName )
1695- diags = diags .Append (sDiags )
1696- if sDiags .HasErrors () {
1697- diags = diags .Append (fmt .Errorf ("Failed to create a state manager for state store %q in provider %s (%q). This is a bug in Terraform and should be reported: %w" ,
1698- c .Type ,
1699- c .Provider .Name ,
1700- c .ProviderAddr ,
1701- sDiags .Err ()))
1702- return nil , diags
1703- }
1704- emptyState := states .NewState ()
1705- if err := defaultSMgr .WriteState (emptyState ); err != nil {
1706- diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1707- return nil , diags
1708- }
1709- // TODO - implement Read/Write state RPC methods
1710- if err := defaultSMgr .PersistState (nil ); err != nil {
1711- diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1712- return nil , diags
1713- }
1694+ m .createDefaultWorkspace (c , b )
17141695 default :
17151696 diags = diags .Append (err )
17161697 return nil , diags
@@ -1735,6 +1716,36 @@ func (m *Meta) stateStore_C_s(c *configs.StateStore, cHash int, backendSMgr *cli
17351716 return b , diags
17361717}
17371718
1719+ // createDefaultWorkspace receives a backend made using a pluggable state store, and details about that store's config,
1720+ // and persists an empty state file in the default workspace. By creating this artifact we ensure that the default
1721+ // workspace is created and usable by Terraform in later operations.
1722+ func (m * Meta ) createDefaultWorkspace (c * configs.StateStore , b backend.Backend ) tfdiags.Diagnostics {
1723+ var diags tfdiags.Diagnostics
1724+
1725+ defaultSMgr , sDiags := b .StateMgr (backend .DefaultStateName )
1726+ diags = diags .Append (sDiags )
1727+ if sDiags .HasErrors () {
1728+ diags = diags .Append (fmt .Errorf ("Failed to create a state manager for state store %q in provider %s (%q). This is a bug in Terraform and should be reported: %w" ,
1729+ c .Type ,
1730+ c .Provider .Name ,
1731+ c .ProviderAddr ,
1732+ sDiags .Err ()))
1733+ return diags
1734+ }
1735+ emptyState := states .NewState ()
1736+ if err := defaultSMgr .WriteState (emptyState ); err != nil {
1737+ diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1738+ return diags
1739+ }
1740+ // TODO - implement Read/Write state RPC methods
1741+ if err := defaultSMgr .PersistState (nil ); err != nil {
1742+ diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1743+ return diags
1744+ }
1745+
1746+ return diags
1747+ }
1748+
17381749// Initializing a saved backend from the cache file (legacy state file)
17391750//
17401751// TODO: This is extremely similar to Meta.backendFromState() but for legacy reasons this is the
0 commit comments