@@ -1405,20 +1405,132 @@ func (p *GRPCProvider) ListResource(r providers.ListResourceRequest) providers.L
14051405 return resp
14061406}
14071407
1408- func (p * GRPCProvider ) ValidateStateStoreConfig (r providers.ValidateStateStoreConfigRequest ) providers.ValidateStateStoreConfigResponse {
1409- panic ("not implemented" )
1408+ func (p * GRPCProvider ) ValidateStateStoreConfig (r providers.ValidateStateStoreConfigRequest ) (resp providers.ValidateStateStoreConfigResponse ) {
1409+ logger .Trace ("GRPCProvider.v6: ValidateStateStoreConfig" )
1410+
1411+ schema := p .GetProviderSchema ()
1412+ if schema .Diagnostics .HasErrors () {
1413+ resp .Diagnostics = schema .Diagnostics
1414+ return resp
1415+ }
1416+
1417+ ssSchema , ok := schema .StateStores [r .TypeName ]
1418+ if ! ok {
1419+ resp .Diagnostics = resp .Diagnostics .Append (fmt .Errorf ("unknown state store type %q" , r .TypeName ))
1420+ return resp
1421+ }
1422+
1423+ mp , err := msgpack .Marshal (r .Config , ssSchema .Body .ImpliedType ())
1424+ if err != nil {
1425+ resp .Diagnostics = resp .Diagnostics .Append (err )
1426+ return resp
1427+ }
1428+
1429+ protoReq := & proto6.ValidateStateStore_Request {
1430+ TypeName : r .TypeName ,
1431+ Config : & proto6.DynamicValue {Msgpack : mp },
1432+ }
1433+
1434+ protoResp , err := p .client .ValidateStateStoreConfig (p .ctx , protoReq )
1435+ if err != nil {
1436+ resp .Diagnostics = resp .Diagnostics .Append (grpcErr (err ))
1437+ return resp
1438+ }
1439+
1440+ resp .Diagnostics = resp .Diagnostics .Append (convert .ProtoToDiagnostics (protoResp .Diagnostics ))
1441+ return resp
14101442}
14111443
1412- func (p * GRPCProvider ) ConfigureStateStore (r providers.ConfigureStateStoreRequest ) providers.ConfigureStateStoreResponse {
1413- panic ("not implemented" )
1444+ func (p * GRPCProvider ) ConfigureStateStore (r providers.ConfigureStateStoreRequest ) (resp providers.ConfigureStateStoreResponse ) {
1445+ logger .Trace ("GRPCProvider.v6: ConfigureStateStore" )
1446+
1447+ schema := p .GetProviderSchema ()
1448+ if schema .Diagnostics .HasErrors () {
1449+ resp .Diagnostics = schema .Diagnostics
1450+ return resp
1451+ }
1452+
1453+ ssSchema , ok := schema .StateStores [r .TypeName ]
1454+ if ! ok {
1455+ resp .Diagnostics = resp .Diagnostics .Append (fmt .Errorf ("unknown state store type %q" , r .TypeName ))
1456+ return resp
1457+ }
1458+
1459+ mp , err := msgpack .Marshal (r .Config , ssSchema .Body .ImpliedType ())
1460+ if err != nil {
1461+ resp .Diagnostics = resp .Diagnostics .Append (err )
1462+ return resp
1463+ }
1464+
1465+ protoReq := & proto6.ConfigureStateStore_Request {
1466+ TypeName : r .TypeName ,
1467+ Config : & proto6.DynamicValue {
1468+ Msgpack : mp ,
1469+ },
1470+ }
1471+
1472+ protoResp , err := p .client .ConfigureStateStore (p .ctx , protoReq )
1473+ if err != nil {
1474+ resp .Diagnostics = resp .Diagnostics .Append (grpcErr (err ))
1475+ return resp
1476+ }
1477+ resp .Diagnostics = resp .Diagnostics .Append (convert .ProtoToDiagnostics (protoResp .Diagnostics ))
1478+ return resp
14141479}
14151480
1416- func (p * GRPCProvider ) GetStates (r providers.GetStatesRequest ) providers.GetStatesResponse {
1417- panic ("not implemented" )
1481+ func (p * GRPCProvider ) GetStates (r providers.GetStatesRequest ) (resp providers.GetStatesResponse ) {
1482+ logger .Trace ("GRPCProvider.v6: GetStates" )
1483+
1484+ schema := p .GetProviderSchema ()
1485+ if schema .Diagnostics .HasErrors () {
1486+ resp .Diagnostics = schema .Diagnostics
1487+ return resp
1488+ }
1489+
1490+ if _ , ok := schema .StateStores [r .TypeName ]; ! ok {
1491+ resp .Diagnostics = resp .Diagnostics .Append (fmt .Errorf ("unknown state store type %q" , r .TypeName ))
1492+ return resp
1493+ }
1494+
1495+ protoReq := & proto6.GetStates_Request {
1496+ TypeName : r .TypeName ,
1497+ }
1498+
1499+ protoResp , err := p .client .GetStates (p .ctx , protoReq )
1500+ if err != nil {
1501+ resp .Diagnostics = resp .Diagnostics .Append (grpcErr (err ))
1502+ return resp
1503+ }
1504+ resp .Diagnostics = resp .Diagnostics .Append (convert .ProtoToDiagnostics (protoResp .Diagnostics ))
1505+ resp .States = protoResp .StateId
1506+ return resp
14181507}
14191508
1420- func (p * GRPCProvider ) DeleteState (r providers.DeleteStateRequest ) providers.DeleteStateResponse {
1421- panic ("not implemented" )
1509+ func (p * GRPCProvider ) DeleteState (r providers.DeleteStateRequest ) (resp providers.DeleteStateResponse ) {
1510+ logger .Trace ("GRPCProvider.v6: DeleteState" )
1511+
1512+ protoReq := & proto6.DeleteState_Request {
1513+ TypeName : r .TypeName ,
1514+ }
1515+
1516+ schema := p .GetProviderSchema ()
1517+ if schema .Diagnostics .HasErrors () {
1518+ resp .Diagnostics = schema .Diagnostics
1519+ return resp
1520+ }
1521+
1522+ if _ , ok := schema .StateStores [r .TypeName ]; ! ok {
1523+ resp .Diagnostics = resp .Diagnostics .Append (fmt .Errorf ("unknown state store type %q" , r .TypeName ))
1524+ return resp
1525+ }
1526+
1527+ protoResp , err := p .client .DeleteState (p .ctx , protoReq )
1528+ if err != nil {
1529+ resp .Diagnostics = resp .Diagnostics .Append (grpcErr (err ))
1530+ return resp
1531+ }
1532+ resp .Diagnostics = resp .Diagnostics .Append (convert .ProtoToDiagnostics (protoResp .Diagnostics ))
1533+ return resp
14221534}
14231535
14241536// closing the grpc connection is final, and terraform will call it at the end of every phase.
0 commit comments