@@ -541,130 +541,6 @@ func (r *Resource) RefreshWithoutUpgrade(
541541 return r .recordCurrentSchemaVersion (state ), err
542542}
543543
544- // Refresh refreshes the state of the resource.
545- func (r * Resource ) Refresh (
546- ctx context.Context ,
547- s * terraform.InstanceState ,
548- meta interface {}) (* terraform.InstanceState , error ) {
549- // If the ID is already somehow blank, it doesn't exist
550- if s .ID == "" {
551- return nil , nil
552- }
553-
554- rt := ResourceTimeout {}
555- if _ , ok := s .Meta [TimeoutKey ]; ok {
556- if err := rt .StateDecode (s ); err != nil {
557- log .Printf ("[ERR] Error decoding ResourceTimeout: %s" , err )
558- }
559- }
560-
561- if r .existsFuncSet () {
562- // Make a copy of data so that if it is modified it doesn't
563- // affect our Read later.
564- data , err := schemaMap (r .Schema ).Data (s , nil )
565- data .timeouts = & rt
566-
567- if err != nil {
568- return s , err
569- }
570-
571- exists , err := r .exists (ctx , data , meta )
572-
573- if err != nil {
574- return s , err
575- }
576- if ! exists {
577- return nil , nil
578- }
579- }
580-
581- // there may be new StateUpgraders that need to be run
582- s , err := r .upgradeState (ctx , s , meta )
583- if err != nil {
584- return s , err
585- }
586-
587- data , err := schemaMap (r .Schema ).Data (s , nil )
588- data .timeouts = & rt
589- if err != nil {
590- return s , err
591- }
592-
593- err = r .read (ctx , data , meta )
594-
595- state := data .State ()
596- if state != nil && state .ID == "" {
597- state = nil
598- }
599-
600- return r .recordCurrentSchemaVersion (state ), err
601- }
602-
603- func (r * Resource ) upgradeState (ctx context.Context , s * terraform.InstanceState , meta interface {}) (* terraform.InstanceState , error ) {
604- var err error
605-
606- needsMigration , stateSchemaVersion := r .checkSchemaVersion (s )
607- migrate := needsMigration && r .MigrateState != nil
608-
609- if migrate {
610- s , err = r .MigrateState (stateSchemaVersion , s , meta )
611- if err != nil {
612- return s , err
613- }
614- }
615-
616- if len (r .StateUpgraders ) == 0 {
617- return s , nil
618- }
619-
620- // If we ran MigrateState, then the stateSchemaVersion value is no longer
621- // correct. We can expect the first upgrade function to be the correct
622- // schema type version.
623- if migrate {
624- stateSchemaVersion = r .StateUpgraders [0 ].Version
625- }
626-
627- schemaType := r .CoreConfigSchema ().ImpliedType ()
628- // find the expected type to convert the state
629- for _ , upgrader := range r .StateUpgraders {
630- if stateSchemaVersion == upgrader .Version {
631- schemaType = upgrader .Type
632- }
633- }
634-
635- // StateUpgraders only operate on the new JSON format state, so the state
636- // need to be converted.
637- stateVal , err := StateValueFromInstanceState (s , schemaType )
638- if err != nil {
639- return nil , err
640- }
641-
642- jsonState , err := StateValueToJSONMap (stateVal , schemaType )
643- if err != nil {
644- return nil , err
645- }
646-
647- for _ , upgrader := range r .StateUpgraders {
648- if stateSchemaVersion != upgrader .Version {
649- continue
650- }
651-
652- jsonState , err = upgrader .Upgrade (ctx , jsonState , meta )
653- if err != nil {
654- return nil , err
655- }
656- stateSchemaVersion ++
657- }
658-
659- // now we need to re-flatmap the new state
660- stateVal , err = JSONMapToStateValue (jsonState , r .CoreConfigSchema ())
661- if err != nil {
662- return nil , err
663- }
664-
665- return r .ShimInstanceStateFromValue (stateVal )
666- }
667-
668544func (r * Resource ) createFuncSet () bool {
669545 return (r .Create != nil || r .CreateContext != nil )
670546}
@@ -895,36 +771,6 @@ func (r *Resource) isTopLevel() bool {
895771 return (r .createFuncSet () || r .readFuncSet ())
896772}
897773
898- // Determines if a given InstanceState needs to be migrated by checking the
899- // stored version number with the current SchemaVersion
900- func (r * Resource ) checkSchemaVersion (is * terraform.InstanceState ) (bool , int ) {
901- // Get the raw interface{} value for the schema version. If it doesn't
902- // exist or is nil then set it to zero.
903- raw := is .Meta ["schema_version" ]
904- if raw == nil {
905- raw = "0"
906- }
907-
908- // Try to convert it to a string. If it isn't a string then we pretend
909- // that it isn't set at all. It should never not be a string unless it
910- // was manually tampered with.
911- rawString , ok := raw .(string )
912- if ! ok {
913- rawString = "0"
914- }
915-
916- stateSchemaVersion , _ := strconv .Atoi (rawString )
917-
918- // Don't run MigrateState if the version is handled by a StateUpgrader,
919- // since StateMigrateFuncs are not required to handle unknown versions
920- maxVersion := r .SchemaVersion
921- if len (r .StateUpgraders ) > 0 {
922- maxVersion = r .StateUpgraders [0 ].Version
923- }
924-
925- return stateSchemaVersion < maxVersion , stateSchemaVersion
926- }
927-
928774func (r * Resource ) recordCurrentSchemaVersion (
929775 state * terraform.InstanceState ) * terraform.InstanceState {
930776 if state != nil && r .SchemaVersion > 0 {
0 commit comments