forked from apache/cloudstack
-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feature: Shared Storage Filesystem as a First Class Feature (apache#9208
) This PR implements Storage filesystem as a first class feature. https://cwiki.apache.org/confluence/display/CLOUDSTACK/Storage+Filesystem+as+a+First+Class+Feature Documentation PR: apache/cloudstack-documentation#420 Co-authored-by: Wei Zhou <[email protected]>
- Loading branch information
Showing
95 changed files
with
8,939 additions
and
611 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
145 changes: 145 additions & 0 deletions
145
...rg/apache/cloudstack/api/command/user/storage/sharedfs/ChangeSharedFSDiskOfferingCmd.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
// or more contributor license agreements. See the NOTICE file | ||
// distributed with this work for additional information | ||
// regarding copyright ownership. The ASF licenses this file | ||
// to you under the Apache License, Version 2.0 (the | ||
// "License"); you may not use this file except in compliance | ||
// with the License. You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, | ||
// software distributed under the License is distributed on an | ||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
// KIND, either express or implied. See the License for the | ||
// specific language governing permissions and limitations | ||
// under the License. | ||
package org.apache.cloudstack.api.command.user.storage.sharedfs; | ||
|
||
import javax.inject.Inject; | ||
|
||
import org.apache.cloudstack.acl.RoleType; | ||
import org.apache.cloudstack.api.APICommand; | ||
import org.apache.cloudstack.api.ApiConstants; | ||
import org.apache.cloudstack.api.ApiErrorCode; | ||
import org.apache.cloudstack.api.BaseAsyncCmd; | ||
import org.apache.cloudstack.api.Parameter; | ||
import org.apache.cloudstack.api.ResponseObject; | ||
import org.apache.cloudstack.api.ServerApiException; | ||
import org.apache.cloudstack.api.command.user.UserCmd; | ||
import org.apache.cloudstack.api.response.DiskOfferingResponse; | ||
import org.apache.cloudstack.api.response.SharedFSResponse; | ||
import org.apache.cloudstack.context.CallContext; | ||
import org.apache.cloudstack.storage.sharedfs.SharedFS; | ||
import org.apache.cloudstack.storage.sharedfs.SharedFSService; | ||
|
||
import com.cloud.event.EventTypes; | ||
import com.cloud.exception.ResourceAllocationException; | ||
import com.cloud.user.Account; | ||
|
||
@APICommand(name = "changeSharedFileSystemDiskOffering", | ||
responseObject= SharedFSResponse.class, | ||
description = "Change Disk offering of a Shared FileSystem", | ||
responseView = ResponseObject.ResponseView.Restricted, | ||
entityType = SharedFS.class, | ||
requestHasSensitiveInfo = false, | ||
since = "4.20.0", | ||
authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User}) | ||
public class ChangeSharedFSDiskOfferingCmd extends BaseAsyncCmd implements UserCmd { | ||
|
||
@Inject | ||
SharedFSService sharedFSService; | ||
|
||
///////////////////////////////////////////////////// | ||
//////////////// API parameters ///////////////////// | ||
///////////////////////////////////////////////////// | ||
|
||
@Parameter(name = ApiConstants.ID, | ||
type = CommandType.UUID, | ||
required = true, | ||
entityType = SharedFSResponse.class, | ||
description = "the ID of the shared filesystem") | ||
private Long id; | ||
|
||
@Parameter(name = ApiConstants.DISK_OFFERING_ID, | ||
type = CommandType.UUID, | ||
entityType = DiskOfferingResponse.class, | ||
description = "the disk offering to use for the underlying storage") | ||
private Long diskOfferingId; | ||
|
||
@Parameter(name = ApiConstants.SIZE, | ||
type = CommandType.LONG, | ||
description = "the size of the shared filesystem in GiB") | ||
private Long size; | ||
|
||
@Parameter(name = ApiConstants.MIN_IOPS, | ||
type = CommandType.LONG, | ||
description = "min iops") | ||
private Long minIops; | ||
|
||
@Parameter(name = ApiConstants.MAX_IOPS, | ||
type = CommandType.LONG, | ||
description = "max iops") | ||
private Long maxIops; | ||
|
||
///////////////////////////////////////////////////// | ||
/////////////////// Accessors /////////////////////// | ||
///////////////////////////////////////////////////// | ||
|
||
public Long getId() { | ||
return id; | ||
} | ||
|
||
public Long getSize() { | ||
return size; | ||
} | ||
|
||
public Long getDiskOfferingId() { | ||
return diskOfferingId; | ||
} | ||
|
||
public Long getMinIops() { | ||
return minIops; | ||
} | ||
|
||
public Long getMaxIops() { | ||
return maxIops; | ||
} | ||
|
||
///////////////////////////////////////////////////// | ||
/////////////// API Implementation/////////////////// | ||
///////////////////////////////////////////////////// | ||
|
||
@Override | ||
public String getEventType() { | ||
return EventTypes.EVENT_SHAREDFS_CHANGE_DISK_OFFERING; | ||
} | ||
|
||
@Override | ||
public String getEventDescription() { | ||
return "Changing disk offering for the Shared FileSystem " + id; | ||
} | ||
|
||
@Override | ||
public long getEntityOwnerId() { | ||
return CallContext.current().getCallingAccount().getId(); | ||
} | ||
|
||
@Override | ||
public void execute() throws ResourceAllocationException { | ||
SharedFS sharedFS = sharedFSService.changeSharedFSDiskOffering(this); | ||
if (sharedFS != null) { | ||
ResponseObject.ResponseView respView = getResponseView(); | ||
Account caller = CallContext.current().getCallingAccount(); | ||
if (_accountService.isRootAdmin(caller.getId())) { | ||
respView = ResponseObject.ResponseView.Full; | ||
} | ||
SharedFSResponse response = _responseGenerator.createSharedFSResponse(respView, sharedFS); | ||
response.setObjectName(SharedFS.class.getSimpleName().toLowerCase()); | ||
response.setResponseName(getCommandName()); | ||
setResponseObject(response); | ||
} else { | ||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to change disk offering for the Shared FileSystem"); | ||
} | ||
} | ||
} |
Oops, something went wrong.