@@ -1686,25 +1686,7 @@ func (m *Meta) stateStore_C_s(c *configs.StateStore, cHash int, backendSMgr *cli
1686
1686
1687
1687
// TODO: Confirm if defaulting to creation on first use (rather than error) is a good idea
1688
1688
// Make the default workspace. All other workspaces are user-created via the workspace commands.
1689
- defaultSMgr , err := b .StateMgr (backend .DefaultStateName )
1690
- if err != nil {
1691
- 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" ,
1692
- c .Type ,
1693
- c .Provider .Name ,
1694
- c .ProviderAddr ,
1695
- err ))
1696
- return nil , diags
1697
- }
1698
- emptyState := states .NewState ()
1699
- if err := defaultSMgr .WriteState (emptyState ); err != nil {
1700
- diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1701
- return nil , diags
1702
- }
1703
- // TODO - implement Read/Write state RPC methods
1704
- if err := defaultSMgr .PersistState (nil ); err != nil {
1705
- diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1706
- return nil , diags
1707
- }
1689
+ m .createDefaultWorkspace (c , b )
1708
1690
default :
1709
1691
diags = diags .Append (err )
1710
1692
return nil , diags
@@ -1729,6 +1711,35 @@ func (m *Meta) stateStore_C_s(c *configs.StateStore, cHash int, backendSMgr *cli
1729
1711
return b , diags
1730
1712
}
1731
1713
1714
+ // createDefaultWorkspace receives a backend made using a pluggable state store, and details about that store's config,
1715
+ // and persists an empty state file in the default workspace. By creating this artifact we ensure that the default
1716
+ // workspace is created and usable by Terraform in later operations.
1717
+ func (m * Meta ) createDefaultWorkspace (c * configs.StateStore , b backend.Backend ) tfdiags.Diagnostics {
1718
+ var diags tfdiags.Diagnostics
1719
+
1720
+ defaultSMgr , err := b .StateMgr (backend .DefaultStateName )
1721
+ if err != nil {
1722
+ 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" ,
1723
+ c .Type ,
1724
+ c .Provider .Name ,
1725
+ c .ProviderAddr ,
1726
+ err ))
1727
+ return diags
1728
+ }
1729
+ emptyState := states .NewState ()
1730
+ if err := defaultSMgr .WriteState (emptyState ); err != nil {
1731
+ diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1732
+ return diags
1733
+ }
1734
+ // TODO - implement Read/Write state RPC methods
1735
+ if err := defaultSMgr .PersistState (nil ); err != nil {
1736
+ diags = diags .Append (fmt .Errorf (errStateStoreWorkspaceCreate , c .Type , err ))
1737
+ return diags
1738
+ }
1739
+
1740
+ return diags
1741
+ }
1742
+
1732
1743
// Initializing a saved backend from the cache file (legacy state file)
1733
1744
//
1734
1745
// TODO: This is extremely similar to Meta.backendFromState() but for legacy reasons this is the
0 commit comments