/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.compute.implementation;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.compute.AccessLevel;
import com.microsoft.azure.management.compute.Snapshot;
import com.microsoft.azure.management.compute.Snapshots;
import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.TopLevelModifiableResourcesImpl;
/**
* The implementation for Snapshots.
*/
@LangDefinition
class SnapshotsImpl
extends TopLevelModifiableResourcesImpl<
Snapshot,
SnapshotImpl,
SnapshotInner,
SnapshotsInner,
ComputeManager>
implements Snapshots {
SnapshotsImpl(ComputeManager computeManager) {
super(computeManager.inner().snapshots(), computeManager);
}
@Override
public String grantAccess(String resourceGroupName,
String snapshotName,
AccessLevel accessLevel,
int accessDuration) {
GrantAccessDataInner grantAccessDataInner = new GrantAccessDataInner();
grantAccessDataInner.withAccess(accessLevel)
.withDurationInSeconds(accessDuration);
AccessUriInner accessUriInner = this.inner().grantAccess(resourceGroupName, snapshotName, grantAccessDataInner);
return accessUriInner.accessSAS();
}
@Override
public void revokeAccess(String resourceGroupName, String diskName) {
this.inner().revokeAccess(resourceGroupName, diskName);
}
@Override
protected SnapshotImpl wrapModel(String name) {
return new SnapshotImpl(name, new SnapshotInner(), this.manager());
}
@Override
protected SnapshotImpl wrapModel(SnapshotInner inner) {
return new SnapshotImpl(inner.name(), inner, this.manager());
}
@Override
public Snapshot.DefinitionStages.Blank define(String name) {
return this.wrapModel(name);
}
}