It translates snapshot keys into metadata structure
This commit is contained in:
		
							parent
							
								
									1a107e2a28
								
							
						
					
					
						commit
						dae67e6be6
					
				
					 3 changed files with 63 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -249,6 +249,20 @@ func (s *SnapshotProcessor) ListAppsSnapshotsByLabel(desiredLabel string) ([]Sna
 | 
			
		|||
	return snapshots, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetSnapshot returns a single snapshot's metadata for given key.
 | 
			
		||||
// In fact this is just key translation method. It parses the key and returns
 | 
			
		||||
// what's inside. Doesn't check if the snapshot actually exist.
 | 
			
		||||
func (s *SnapshotProcessor) GetSnapshot(key string) (Snapshot, error) {
 | 
			
		||||
	snapshot := Snapshot{}
 | 
			
		||||
 | 
			
		||||
	snapshot, err := DecodeKeyName(key)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return snapshot, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return snapshot, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeleteSnapshot delete's one snapshot
 | 
			
		||||
func (s *SnapshotProcessor) DeleteSnapshot(key string) error {
 | 
			
		||||
	err := s.Driver.Delete(key)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -154,6 +154,12 @@ func TestCreateRestoreListSnapshot(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestGetSnapshot(t *testing.T) {
 | 
			
		||||
	snapshot, err := snapshotProcessor.GetSnapshot("app_0102:1634510035:eyJhcHBfbmFtZSI6ImFwcF8wMTAyIiwidHMiOjE2MzQ1MTAwMzUsImxhYmVscyI6WyJ1c2VyaWQ6MSJdfQ==")
 | 
			
		||||
	assert.Nil(t, err)
 | 
			
		||||
	assert.Equal(t, "app_0102", snapshot.AppName)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestListAppsSnapshotsByLabel(t *testing.T) {
 | 
			
		||||
	appName := "app_0102"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,6 +64,7 @@ func _messageHandler(m *nats.Msg) error {
 | 
			
		|||
		"list_snapshots":          listSnapshotsEventHandler,
 | 
			
		||||
		"list_apps_snapshots":     listAppsSnapshotsEventHandler,
 | 
			
		||||
		"list_snapshots_by_label": listSnapshotsByLabelEventHandler,
 | 
			
		||||
		"get_snapshot":            getSnapshotEventHandler,
 | 
			
		||||
		"delete_snapshot":         deleteSnapshotEventHandler,
 | 
			
		||||
		"delete_app_snapshots":    deleteAppSnapshotsEventHandler,
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -1049,6 +1050,48 @@ func listSnapshotsByLabelEventHandler(m *nats.Msg, message *RequestMessage) erro
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
getSnapshotEventHandler returns a single snapshot for given key from the request payload.
 | 
			
		||||
 | 
			
		||||
Payload: snapshot's key
 | 
			
		||||
Response: snapshot metadata
 | 
			
		||||
*/
 | 
			
		||||
func getSnapshotEventHandler(m *nats.Msg, message *RequestMessage) error {
 | 
			
		||||
	processor := apps.SnapshotProcessor{
 | 
			
		||||
		AppsPath:        config.AppsPath,
 | 
			
		||||
		TmpSnapshotPath: config.SnapshotsPath,
 | 
			
		||||
 | 
			
		||||
		Driver: drivers.S3Driver{
 | 
			
		||||
			S3AccessKey: config.SnapshotsS3AccessKey,
 | 
			
		||||
			S3SecretKey: config.SnapshotsS3SecretKey,
 | 
			
		||||
			S3Endpoint:  config.SnapshotsS3Endpoint,
 | 
			
		||||
			S3SSL:       config.SnapshotsS3SSL,
 | 
			
		||||
			Bucket:      config.SnapshotsS3Bucket,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	snapshot, err := processor.GetSnapshot(message.Payload)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errorReplyFormater(m, "backend error", err)
 | 
			
		||||
	}
 | 
			
		||||
	output := SnapshotMetadata{
 | 
			
		||||
		Key:      snapshot.KeyName(),
 | 
			
		||||
		Metadata: snapshot,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	data, err := json.Marshal(output)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errorReplyFormater(m, "reply formatter error", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = m.Respond(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Println("ERROR: get snapshot:", err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
deleteSnapshotEventHandler delete a single snapshot. This is not bound to application name.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue