本文整理汇总了Golang中github.com/skyrings/skyring-common/tools/uuid.Parse函数的典型用法代码示例。如果您正苦于以下问题:Golang Parse函数的具体用法?Golang Parse怎么用?Golang Parse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Parse函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: GET_BlockDevice
func (a *App) GET_BlockDevice(w http.ResponseWriter, r *http.Request) {
ctxt, err := GetContext(r)
if err != nil {
logger.Get().Error("Error Getting the context. error: %v", err)
}
vars := mux.Vars(r)
cluster_id_str := vars["cluster-id"]
cluster_id, err := uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the cluster id: %s. error: %v", ctxt, cluster_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the cluster id: %s", cluster_id_str))
return
}
storage_id_str := vars["storage-id"]
storage_id, err := uuid.Parse(storage_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the storage id: %s. error: %v", ctxt, storage_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the storage id: %s", storage_id_str))
return
}
blockdevice_id_str := vars["blockdevice-id"]
blockdevice_id, err := uuid.Parse(blockdevice_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the block device id: %s. error: %v", ctxt, blockdevice_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the block device id: %s", blockdevice_id_str))
return
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
collection := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_BLOCK_DEVICES)
var blkDevice models.BlockDevice
if err := collection.Find(bson.M{"clusterid": *cluster_id, "storageid": *storage_id, "id": *blockdevice_id}).One(&blkDevice); err != nil {
if err == mgo.ErrNotFound {
HttpResponse(w, http.StatusNotFound, err.Error())
} else {
HttpResponse(w, http.StatusInternalServerError, err.Error())
}
logger.Get().Error("%s - Error getting the block device %v of storage %v on cluster: %v. error: %v", ctxt, *blockdevice_id, *storage_id, *cluster_id, err)
return
}
if blkDevice.Name == "" {
HttpResponse(w, http.StatusBadRequest, "Block device not found")
logger.Get().Error("%s - Block device with id: %v not found for storage %v on cluster: %v. error: %v", ctxt, *blockdevice_id, *storage_id, *cluster_id, err)
return
} else {
json.NewEncoder(w).Encode(blkDevice)
}
}
开发者ID:skyrings,项目名称:skyring,代码行数:51,代码来源:block_devices.go
示例2: GET_Storage
func (a *App) GET_Storage(w http.ResponseWriter, r *http.Request) {
ctxt, err := GetContext(r)
if err != nil {
logger.Get().Error("Error Getting the context. error: %v", err)
}
vars := mux.Vars(r)
cluster_id_str := vars["cluster-id"]
cluster_id, err := uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error("%s-Error parsing the cluster id: %s. error: %v", ctxt, cluster_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the cluster id: %s", cluster_id_str))
return
}
storage_id_str := vars["storage-id"]
storage_id, err := uuid.Parse(storage_id_str)
if err != nil {
logger.Get().Error("%s-Error parsing the storage id: %s. error: %v", ctxt, storage_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the storage id: %s", storage_id_str))
return
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
collection := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE)
var storage models.Storage
if err := collection.Find(bson.M{"clusterid": *cluster_id, "storageid": *storage_id}).One(&storage); err != nil {
if err == mgo.ErrNotFound {
HttpResponse(w, http.StatusNotFound, err.Error())
} else {
HttpResponse(w, http.StatusInternalServerError, err.Error())
}
logger.Get().Error("%s-Error getting the storage: %v on cluster: %v. error: %v", ctxt, *storage_id, *cluster_id, err)
return
}
if storage.Name == "" {
HttpResponse(w, http.StatusBadRequest, "Storage not found")
logger.Get().Error("%s-Storage with id: %v not found for cluster: %v. error: %v", ctxt, *storage_id, *cluster_id, err)
return
}
if storage.SluIds, err = GetSluIds(storage.Profile, storage.ClusterId, ctxt); err != nil {
HttpResponse(w, http.StatusInternalServerError, err.Error())
logger.Get().Error("%s-Error getting SLUs with given storage profile: %s. error: %v", ctxt, storage.Profile, err)
return
}
json.NewEncoder(w).Encode(storage)
}
开发者ID:skyrings,项目名称:skyring,代码行数:48,代码来源:storage.go
示例3: GET_ClusterBlockDevices
func (a *App) GET_ClusterBlockDevices(w http.ResponseWriter, r *http.Request) {
ctxt, err := GetContext(r)
if err != nil {
logger.Get().Error("Error Getting the context. error: %v", err)
}
vars := mux.Vars(r)
cluster_id_str := vars["cluster-id"]
cluster_id, err := uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the cluster id: %s. error: %v", ctxt, cluster_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the cluster id: %s", cluster_id_str))
return
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
collection := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_BLOCK_DEVICES)
var blkDevices []models.BlockDevice
if err := collection.Find(bson.M{"clusterid": *cluster_id}).All(&blkDevices); err != nil {
if err == mgo.ErrNotFound {
HttpResponse(w, http.StatusNotFound, err.Error())
} else {
HttpResponse(w, http.StatusInternalServerError, err.Error())
}
logger.Get().Error("%s - Error getting the block devices list for cluster: %v. error: %v", ctxt, *cluster_id, err)
return
}
if len(blkDevices) == 0 {
json.NewEncoder(w).Encode([]models.BlockDevice{})
} else {
json.NewEncoder(w).Encode(blkDevices)
}
}
开发者ID:skyrings,项目名称:skyring,代码行数:35,代码来源:block_devices.go
示例4: GetEventById
func GetEventById(w http.ResponseWriter, r *http.Request) {
ctxt, err := GetContext(r)
if err != nil {
logger.Get().Error("Error Getting the context. error: %v", err)
}
vars := mux.Vars(r)
event_id_str := vars["event-id"]
event_id, err := uuid.Parse(event_id_str)
if err != nil {
logger.Get().Error("%s-Error parsing event id: %s", ctxt, event_id_str)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing event id: %s", event_id_str))
return
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
collection := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_APP_EVENTS)
var event models.AppEvent
if err := collection.Find(bson.M{"eventid": *event_id}).One(&event); err == mgo.ErrNotFound {
HttpResponse(w, http.StatusNotFound, "Event not found")
logger.Get().Error("%s-Event: %v not found. error: %v", ctxt, *event_id, err)
return
} else if err != nil {
logger.Get().Error("%s-Error getting the event detail for %v. error: %v", ctxt, *event_id, err)
HttpResponse(w, http.StatusBadRequest, "Event finding the record")
return
} else {
json.NewEncoder(w).Encode(event)
}
}
开发者ID:skyrings,项目名称:skyring,代码行数:32,代码来源:events.go
示例5: getSubTasks
func (a *App) getSubTasks(rw http.ResponseWriter, req *http.Request) {
ctxt, err := GetContext(req)
if err != nil {
logger.Get().Error("Error Getting the context. error: %v", err)
}
vars := mux.Vars(req)
taskId, err := uuid.Parse(vars["taskid"])
if err != nil {
logger.Get().Error("%s-Unable to Parse the Id: %s. error: %v", ctxt, vars["taskId"], err)
rw.WriteHeader(http.StatusBadRequest)
bytes, _ := json.Marshal(APIError{Error: err.Error()})
rw.Write(bytes)
return
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_TASKS)
var tasks []models.AppTask
if err := coll.Find(bson.M{"parentid": *taskId}).All(&tasks); err != nil {
logger.Get().Error("%s-Unable to get tasks. error: %v", ctxt, err)
if err == mgo.ErrNotFound {
HttpResponse(rw, http.StatusNotFound, err.Error())
} else {
HttpResponse(rw, http.StatusInternalServerError, err.Error())
}
return
}
if len(tasks) == 0 {
json.NewEncoder(rw).Encode([]models.AppTask{})
} else {
json.NewEncoder(rw).Encode(tasks)
}
}
开发者ID:skyrings,项目名称:skyring,代码行数:34,代码来源:tasks.go
示例6: GET_BlockDevices
func (a *App) GET_BlockDevices(w http.ResponseWriter, r *http.Request) {
ctxt, err := GetContext(r)
if err != nil {
logger.Get().Error("Error getting the context. error: %v", err)
}
var filter bson.M = make(map[string]interface{})
params := r.URL.Query()
cluster_id_str := params.Get("clusterid")
if cluster_id_str != "" {
filter["clusterid"], err = uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the cluster id: %s. error: %v", ctxt, cluster_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the cluster id: %s", cluster_id_str))
return
}
}
storage_id_str := params.Get("storageid")
if storage_id_str != "" {
filter["storageid"], err = uuid.Parse(storage_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the storage id: %s. error: %v", ctxt, storage_id_str, err)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing the storage id: %s", storage_id_str))
return
}
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_BLOCK_DEVICES)
var blkDevices []models.BlockDevice
if err := coll.Find(filter).All(&blkDevices); err != nil || len(blkDevices) == 0 {
json.NewEncoder(w).Encode([]models.BlockDevice{})
} else {
json.NewEncoder(w).Encode(blkDevices)
}
}
开发者ID:skyrings,项目名称:skyring,代码行数:37,代码来源:block_devices.go
示例7: GetNodeID
func (s Salt) GetNodeID(node string, ctxt string) (id uuid.UUID, err error) {
mutex.Lock()
defer mutex.Unlock()
pyobj, loc_err := pyFuncs["GetNodeID"].Call(node, ctxt)
if loc_err == nil {
var s string
loc_err = gopy.Convert(python.PyDict_GetItemString(pyobj, node), &s)
if loc_err == nil {
if i, loc_err := uuid.Parse(s); loc_err == nil {
return *i, nil
}
}
}
return uuid.UUID{}, loc_err
}
开发者ID:skyrings,项目名称:skyring,代码行数:15,代码来源:salt.go
示例8: ListMultipartUploads
// ListMultipartUploads - lists all the pending multipart uploads on a
// bucket. Additionally takes 'prefix, keyMarker, uploadIDmarker and a
// delimiter' which allows us to list uploads match a particular
// prefix or lexically starting from 'keyMarker' or delimiting the
// output to get a directory like listing.
//
// Implements S3 compatible ListMultipartUploads API. The resulting
// ListMultipartsInfo structure is unmarshalled directly into XML and
// replied back to the client.
func (xl xlObjects) ListMultipartUploads(bucket, prefix, keyMarker, uploadIDMarker, delimiter string, maxUploads int) (ListMultipartsInfo, error) {
result := ListMultipartsInfo{}
// Verify if bucket is valid.
if !IsValidBucketName(bucket) {
return ListMultipartsInfo{}, traceError(BucketNameInvalid{Bucket: bucket})
}
if !xl.isBucketExist(bucket) {
return ListMultipartsInfo{}, traceError(BucketNotFound{Bucket: bucket})
}
if !IsValidObjectPrefix(prefix) {
return ListMultipartsInfo{}, traceError(ObjectNameInvalid{Bucket: bucket, Object: prefix})
}
// Verify if delimiter is anything other than '/', which we do not support.
if delimiter != "" && delimiter != slashSeparator {
return ListMultipartsInfo{}, traceError(UnsupportedDelimiter{
Delimiter: delimiter,
})
}
// Verify if marker has prefix.
if keyMarker != "" && !strings.HasPrefix(keyMarker, prefix) {
return ListMultipartsInfo{}, traceError(InvalidMarkerPrefixCombination{
Marker: keyMarker,
Prefix: prefix,
})
}
if uploadIDMarker != "" {
if strings.HasSuffix(keyMarker, slashSeparator) {
return result, traceError(InvalidUploadIDKeyCombination{
UploadIDMarker: uploadIDMarker,
KeyMarker: keyMarker,
})
}
id, err := uuid.Parse(uploadIDMarker)
if err != nil {
return result, traceError(err)
}
if id.IsZero() {
return result, traceError(MalformedUploadID{
UploadID: uploadIDMarker,
})
}
}
return xl.listMultipartUploads(bucket, prefix, keyMarker, uploadIDMarker, delimiter, maxUploads)
}
开发者ID:hackintoshrao,项目名称:minio,代码行数:54,代码来源:xl-v1-multipart.go
示例9: GetNodesByIdStr
func GetNodesByIdStr(clusterNodes []models.ClusterNode) (map[string]models.Node, error) {
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
var nodes = make(map[string]models.Node)
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE_NODES)
for _, clusterNode := range clusterNodes {
uuid, err := uuid.Parse(clusterNode.NodeId)
if err != nil {
return nodes, errors.New(fmt.Sprintf("Error parsing node id: %v", clusterNode.NodeId))
}
var node models.Node
if err := coll.Find(bson.M{"nodeid": *uuid}).One(&node); err != nil {
return nodes, err
}
nodes[clusterNode.NodeId] = node
}
return nodes, nil
}
开发者ID:skyrings,项目名称:skyring-common,代码行数:18,代码来源:util.go
示例10: ListMultipartUploads
// ListMultipartUploads - lists all the pending multipart uploads on a
// bucket. Additionally takes 'prefix, keyMarker, uploadIDmarker and a
// delimiter' which allows us to list uploads match a particular
// prefix or lexically starting from 'keyMarker' or delimiting the
// output to get a directory like listing.
//
// Implements S3 compatible ListMultipartUploads API. The resulting
// ListMultipartsInfo structure is unmarshalled directly into XML and
// replied back to the client.
func (fs fsObjects) ListMultipartUploads(bucket, prefix, keyMarker, uploadIDMarker, delimiter string, maxUploads int) (ListMultipartsInfo, error) {
// Validate input arguments.
if !IsValidBucketName(bucket) {
return ListMultipartsInfo{}, BucketNameInvalid{Bucket: bucket}
}
if !fs.isBucketExist(bucket) {
return ListMultipartsInfo{}, BucketNotFound{Bucket: bucket}
}
if !IsValidObjectPrefix(prefix) {
return ListMultipartsInfo{}, ObjectNameInvalid{Bucket: bucket, Object: prefix}
}
// Verify if delimiter is anything other than '/', which we do not support.
if delimiter != "" && delimiter != slashSeparator {
return ListMultipartsInfo{}, UnsupportedDelimiter{
Delimiter: delimiter,
}
}
// Verify if marker has prefix.
if keyMarker != "" && !strings.HasPrefix(keyMarker, prefix) {
return ListMultipartsInfo{}, InvalidMarkerPrefixCombination{
Marker: keyMarker,
Prefix: prefix,
}
}
if uploadIDMarker != "" {
if strings.HasSuffix(keyMarker, slashSeparator) {
return ListMultipartsInfo{}, InvalidUploadIDKeyCombination{
UploadIDMarker: uploadIDMarker,
KeyMarker: keyMarker,
}
}
id, err := uuid.Parse(uploadIDMarker)
if err != nil {
return ListMultipartsInfo{}, err
}
if id.IsZero() {
return ListMultipartsInfo{}, MalformedUploadID{
UploadID: uploadIDMarker,
}
}
}
return fs.listMultipartUploads(bucket, prefix, keyMarker, uploadIDMarker, delimiter, maxUploads)
}
开发者ID:yrashk,项目名称:minio,代码行数:52,代码来源:fs-v1-multipart.go
示例11: lockNode
func lockNode(ctxt string, nodeId uuid.UUID, hostname string, operation string) (*lock.AppLock, error) {
//lock the node
locks := make(map[uuid.UUID]string)
if nodeId.IsZero() {
//Generate temporary UUID from hostname for the node
//for locking as the UUID is not available at this point
id, err := uuid.Parse(util.Md5FromString(hostname))
if err != nil {
return nil, fmt.Errorf("Unable to create the UUID for locking for host: %s. error: %v", hostname, err)
}
nodeId = *id
}
locks[nodeId] = fmt.Sprintf("%s : %s", operation, hostname)
appLock := lock.NewAppLock(locks)
if err := GetApp().GetLockManager().AcquireLock(ctxt, *appLock); err != nil {
return nil, err
}
return appLock, nil
}
开发者ID:skyrings,项目名称:skyring,代码行数:19,代码来源:util.go
示例12: getClusterNodesFromRequest
func getClusterNodesFromRequest(clusterNodes []models.ClusterNode) (models.Nodes, error) {
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
var nodes models.Nodes
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE_NODES)
for _, clusterNode := range clusterNodes {
uuid, err := uuid.Parse(clusterNode.NodeId)
if err != nil {
return nodes, err
}
var node models.Node
if err := coll.Find(bson.M{"nodeid": *uuid}).One(&node); err != nil {
return nodes, err
}
nodes = append(nodes, node)
}
return nodes, nil
}
开发者ID:skyrings,项目名称:skyring,代码行数:20,代码来源:util.go
示例13: StopTask
func (s *CephProvider) StopTask(req models.RpcRequest, resp *models.RpcResponse) error {
ctxt := req.RpcRequestContext
task_id_str := req.RpcRequestVars["task-id"]
logger.Get().Debug(fmt.Sprintf("%s-Stopping sub-task: %s", ctxt, task_id_str))
task_id, err := uuid.Parse(task_id_str)
if err != nil {
logger.Get().Error("%s-Error parsing the task id: %s. error: %v", ctxt, task_id_str, err)
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Error parsing the task id: %s", task_id_str))
return err
}
// Stop the task
if ok, err := task.GetTaskManager().Stop(*task_id); !ok || err != nil {
logger.Get().Error("%s-Failed to stop the task: %v. error: %v", ctxt, task_id, err)
*resp = utils.WriteResponse(http.StatusInternalServerError, "Failed to stop task")
return err
} else {
*resp = utils.WriteResponse(http.StatusOK, "Done")
}
return nil
}
开发者ID:skyrings,项目名称:bigfin,代码行数:21,代码来源:tasks.go
示例14: MonitorCluster
func (s *CephProvider) MonitorCluster(req models.RpcRequest, resp *models.RpcResponse) error {
ctxt := req.RpcRequestContext
cluster_id_str, ok := req.RpcRequestVars["cluster-id"]
var monnode *models.Node
if !ok {
logger.Get().Error("%s-Incorrect cluster id: %s", ctxt, cluster_id_str)
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Incorrect cluster id: %s", cluster_id_str))
return fmt.Errorf("Incorrect cluster id: %s", cluster_id_str)
}
cluster_id, err := uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error("%s-Error parsing the cluster id: %s. Error: %v", ctxt, cluster_id_str, err)
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Error parsing the cluster id: %s.Error: %v", cluster_id_str, err))
return fmt.Errorf("Error parsing the cluster id: %s.Error: %v", cluster_id_str, err)
}
cluster, err := getCluster(*cluster_id)
if err != nil {
logger.Get().Error("%s-Unable to get cluster with id %v.Err %v", ctxt, cluster_id, err.Error())
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Unable to get cluster with id %v.Err %v", cluster_id, err.Error()))
return fmt.Errorf("Unable to get cluster with id %v.Err %v", cluster_id, err.Error())
}
monnode, err = GetCalamariMonNode(*cluster_id, ctxt)
if err != nil {
logger.Get().Error("%s-Unable to pick a random mon from cluster %v.Error: %v", ctxt, cluster.Name, err.Error())
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Unable to pick a random mon from cluster %v.Error: %v", cluster.Name, err.Error()))
return fmt.Errorf("Unable to pick a random mon from cluster %v.Error: %v", cluster.Name, err.Error())
}
monName := (*monnode).Hostname
err = initMonitoringRoutines(ctxt, cluster, monName, MonitoringRoutines)
if err != nil {
logger.Get().Error("%s-Error: %v", ctxt, err.Error())
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Error: %v", err.Error()))
return fmt.Errorf("Error: %v", err.Error())
}
*resp = utils.WriteResponseWithData(http.StatusOK, "", []byte{})
return nil
}
开发者ID:skyrings,项目名称:bigfin,代码行数:38,代码来源:monitoring.go
示例15: PatchEvent
func PatchEvent(w http.ResponseWriter, r *http.Request) {
ctxt, err := GetContext(r)
if err != nil {
logger.Get().Error("Error Getting the context. error: %v", err)
}
var m map[string]interface{}
vars := mux.Vars(r)
event_id_str := vars["event-id"]
event_id, err := uuid.Parse(event_id_str)
if err != nil {
logger.Get().Error("%s-Error parsing event id: %s", ctxt, event_id_str)
HttpResponse(w, http.StatusBadRequest, fmt.Sprintf("Error parsing event id: %s", event_id_str))
return
}
body, err := ioutil.ReadAll(r.Body)
if err != nil {
logger.Get().Error("%s-Error parsing http request body:%s", ctxt, err)
HandleHttpError(w, err)
return
}
if err = json.Unmarshal(body, &m); err != nil {
logger.Get().Error("%s-Unable to Unmarshall the data:%s", ctxt, err)
HandleHttpError(w, err)
return
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
collection := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_APP_EVENTS)
var event models.AppEvent
if err := collection.Find(bson.M{"eventid": *event_id}).One(&event); err == mgo.ErrNotFound {
HttpResponse(w, http.StatusBadRequest, "Event not found")
logger.Get().Error("%s-Event: %v not found. error: %v", ctxt, *event_id, err)
return
} else if err != nil {
logger.Get().Error("%s-Error getting the event detail for %v. error: %v", ctxt, *event_id, err)
HttpResponse(w, http.StatusBadRequest, "Event finding the record")
return
}
if event.Severity == models.ALARM_STATUS_CLEARED {
logger.Get().Error("%s-Cannot ack an event with severity: %s", ctxt, event.Severity.String())
HttpResponse(w, http.StatusBadRequest, "Event with this severity cannot be acked. ")
return
}
if event.Acked {
logger.Get().Error("%s-Cannot ack this event as its already acked", ctxt)
HttpResponse(w, http.StatusBadRequest, "Event Cannot be acked as its already acked.")
return
}
if val, ok := m["acked"]; ok {
event.Acked = val.(bool)
} else {
logger.Get().Error("%s-Insufficient details for patching event: %v", ctxt, *event_id)
HandleHttpError(w, errors.New("insufficient detail for patching event"))
return
}
if val, ok := m["ackcomment"]; ok {
event.UserAckComment = val.(string)
}
event.AckedByUser = strings.Split(ctxt, ":")[0]
event.UserAckedTime = time.Now()
err = collection.Update(bson.M{"eventid": *event_id}, bson.M{"$set": event})
if err != nil {
logger.Get().Error(fmt.Sprintf("%s-Error updating record in DB for event: %v. error: %v", ctxt, event_id_str, err))
HttpResponse(w, http.StatusInternalServerError, err.Error())
}
clearedSeverity := event.Severity
event.Severity = models.ALARM_STATUS_CLEARED
common_event.UpdateAlarmCount(event, clearedSeverity, ctxt)
return
}
开发者ID:skyrings,项目名称:skyring,代码行数:79,代码来源:events.go
示例16: UpdateStorage
func (s *CephProvider) UpdateStorage(req models.RpcRequest, resp *models.RpcResponse) error {
ctxt := req.RpcRequestContext
cluster_id_str := req.RpcRequestVars["cluster-id"]
cluster_id, err := uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error(
"%s - Error parsing the cluster id: %s. error: %v",
ctxt,
cluster_id_str,
err)
*resp = utils.WriteResponse(
http.StatusBadRequest,
fmt.Sprintf(
"Error parsing the cluster id: %s",
cluster_id_str))
return err
}
storage_id_str := req.RpcRequestVars["storage-id"]
storage_id, err := uuid.Parse(storage_id_str)
if err != nil {
logger.Get().Error(
"%s - Error parsing the storage id: %s. error: %v",
ctxt,
storage_id_str,
err)
*resp = utils.WriteResponse(
http.StatusBadRequest,
fmt.Sprintf(
"Error parsing the storage id: %s",
storage_id_str))
return err
}
var request models.AddStorageRequest
if err := json.Unmarshal(req.RpcRequestData, &request); err != nil {
logger.Get().Error(
"%s - Unbale to parse the request. error: %v",
ctxt,
err)
*resp = utils.WriteResponse(
http.StatusBadRequest,
fmt.Sprintf(
"Unbale to parse the request. error: %v",
err))
return err
}
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE)
var storage models.Storage
if err := coll.Find(bson.M{"storageid": *storage_id}).One(&storage); err != nil {
logger.Get().Error(
"%s - Error getting detals of storage: %v on cluster: %v. error: %v",
ctxt,
*storage_id,
*cluster_id,
err)
*resp = utils.WriteResponse(
http.StatusInternalServerError,
fmt.Sprintf(
"Error getting the details of storage: %v",
*storage_id))
return err
}
id, err := strconv.Atoi(storage.Options["id"])
if err != nil {
logger.Get().Error(
"%s - Error getting id of the pool: %v of cluster: %v. error: %v",
ctxt,
*storage_id,
*cluster_id,
err)
*resp = utils.WriteResponse(
http.StatusInternalServerError,
fmt.Sprintf(
"Error getting id of the pool: %v",
*storage_id))
return err
}
asyncTask := func(t *task.Task) {
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE)
for {
select {
case <-t.StopCh:
return
default:
t.UpdateStatus("Started ceph provider pool updation: %v", t.ID)
if request.Name != "" && (request.Replicas != 0 || len(request.Options) != 0) {
utils.FailTask(
fmt.Sprintf(
"Invalid mix of fields to update for storage: %v of cluster: %v. "+
"Name change cannot be mixed with other changes.",
*storage_id,
*cluster_id),
fmt.Errorf("%s-Invalid mix of fields to update", ctxt),
t)
return
}
//.........这里部分代码省略.........
开发者ID:skyrings,项目名称:bigfin,代码行数:101,代码来源:storage.go
示例17: CreateECPool
func (c CephApi) CreateECPool(
name string,
mon string,
clusterName string,
pgnum uint,
replicas int,
quotaMaxObjects int,
quotaMaxBytes uint64,
ecProfile string,
ruleset map[string]interface{},
sProfile string,
ctxt string) (bool, error) {
// Get the cluster id
cluster_id, err := cluster_id(clusterName)
if err != nil {
return false, errors.New(fmt.Sprintf("Could not get id for cluster: %s. error: %v", clusterName, err))
}
cid, _ := uuid.Parse(cluster_id)
//Create the crush rule
cRule := backend.CrushRuleRequest{Name: name, Type: "erasure", MinSize: 3, MaxSize: ec_pool_sizes[ecProfile]}
var steps []map[string]interface{}
leafTries := make(map[string]interface{})
leafTries["num"] = 5
leafTries["op"] = "set_chooseleaf_tries"
steps = append(steps, leafTries)
tries := make(map[string]interface{})
tries["num"] = 100
tries["op"] = "set_choose_tries"
steps = append(steps, tries)
step_take := make(map[string]interface{})
step_take["item_name"] = sProfile
step_take["item"] = ruleset["crushnodeid"].(int)
step_take["op"] = "take"
steps = append(steps, step_take)
leaf := make(map[string]interface{})
leaf["num"] = 0
leaf["type"] = "osd"
leaf["op"] = "chooseleaf_indep"
steps = append(steps, leaf)
emit := make(map[string]interface{})
emit["op"] = "emit"
steps = append(steps, emit)
cRule.Steps = steps
cRuleId, err := c.CreateCrushRule(mon, *cid, cRule, ctxt)
if err != nil {
return false, errors.New(fmt.Sprintf("Failed to create pool: %s for cluster: %s. error: %v", name, clusterName, err))
}
// Replace cluster id in route pattern
createPoolRoute := CEPH_API_ROUTES["CreatePool"]
createPoolRoute.Pattern = strings.Replace(createPoolRoute.Pattern, "{cluster-fsid}", cluster_id, 1)
pool := map[string]interface{}{
"name": name,
"quota_max_objects": quotaMaxObjects,
"quota_max_bytes": quotaMaxBytes,
"pg_num": int(pgnum),
"pgp_num": int(pgnum),
"type": "erasure",
"erasure_code_profile": ecProfile,
"crush_ruleset": cRuleId,
}
buf, err := json.Marshal(pool)
if err != nil {
return false, errors.New(fmt.Sprintf("Error forming request body. error: %v", err))
}
body := bytes.NewBuffer(buf)
resp, err := route_request(createPoolRoute, mon, body)
defer closeRespBody(resp)
if err != nil || (resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted) {
return false, errors.New(fmt.Sprintf("Failed to create pool: %s for cluster: %s. error: %v", name, clusterName, err))
} else {
ok, err := syncRequestStatus(mon, resp)
return ok, err
}
}
开发者ID:skyrings,项目名称:bigfin,代码行数:86,代码来源:api.go
示例18: RemoveStorage
func (s *CephProvider) RemoveStorage(req models.RpcRequest, resp *models.RpcResponse) error {
ctxt := req.RpcRequestContext
cluster_id_str := req.RpcRequestVars["cluster-id"]
cluster_id, err := uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the cluster id: %s. error: %v", ctxt, cluster_id_str, err)
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Error parsing the cluster id: %s", cluster_id_str))
return err
}
storage_id_str := req.RpcRequestVars["storage-id"]
storage_id, err := uuid.Parse(storage_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the storage id: %s. error: %v", ctxt, storage_id_str, err)
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Error parsing the storage id: %s", storage_id_str))
return err
}
asyncTask := func(t *task.Task) {
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
for {
select {
case <-t.StopCh:
return
default:
t.UpdateStatus("Started ceph provider pool deletion: %v", t.ID)
// Get the storage details
var storage models.Storage
var cluster models.Cluster
t.UpdateStatus("Getting details of cluster")
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE_CLUSTERS)
if err := coll.Find(bson.M{"clusterid": *cluster_id}).One(&cluster); err != nil {
utils.FailTask("Error getting details of cluster", fmt.Errorf("%s - %v", ctxt, err), t)
return
}
t.UpdateStatus("Getting details of storage")
coll1 := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE)
if err := coll1.Find(bson.M{"clusterid": *cluster_id, "storageid": *storage_id}).One(&storage); err != nil {
utils.FailTask("Error getting details of storage", fmt.Errorf("%s - %v", ctxt, err), t)
return
}
t.UpdateStatus("Getting a mon from cluster")
monnode, err := GetCalamariMonNode(*cluster_id, ctxt)
if err != nil {
utils.FailTask("Error getting a mon node for cluster", fmt.Errorf("%s - %v", ctxt, err), t)
return
}
poolId, err := strconv.Atoi(storage.Options["id"])
if err != nil {
utils.FailTask("Error getting id of storage", fmt.Errorf("%s - %v", ctxt, err), t)
return
}
t.UpdateStatus("Deleting storage")
ok, err := cephapi_backend.RemovePool(monnode.Hostname, *cluster_id, cluster.Name, storage.Name, poolId, ctxt)
if err != nil || !ok {
utils.FailTask(fmt.Sprintf("Deletion of storage %v failed on cluster: %s", *storage_id, *cluster_id), fmt.Errorf("%s - %v", ctxt, err), t)
return
} else {
t.UpdateStatus("Removing the block devices (if any) for storage entoty")
coll2 := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_BLOCK_DEVICES)
if _, err := coll2.RemoveAll(bson.M{"clusterid": *cluster_id, "storageid": *storage_id}); err != nil {
utils.FailTask(fmt.Sprintf("Error removing block devices for storage %v from DB for cluster: %d", *storage_id, *cluster_id), fmt.Errorf("%s - %v", ctxt, err), t)
return
}
t.UpdateStatus("Removing the storage entity from DB")
if err := coll1.Remove(bson.M{"clusterid": *cluster_id, "storageid": *storage_id}); err != nil {
utils.FailTask(fmt.Sprintf("Error removing storage entity from DB for cluster: %d", *cluster_id), fmt.Errorf("%s - %v", ctxt, err), t)
return
}
}
t.UpdateStatus("Syncing SLUs")
if err := SyncOsdStatus(*cluster_id, ctxt); err != nil {
utils.FailTask("Error syncing SLUs", err, t)
return
}
skyring_util.UpdateStorageCountToSummaries(ctxt, cluster)
UpdateObjectCountToSummaries(ctxt, cluster)
t.UpdateStatus("Success")
t.Done(models.TASK_STATUS_SUCCESS)
return
}
}
}
if taskId, err := bigfin_task.GetTaskManager().Run(
bigfin_conf.ProviderName,
"CEPH-DeleteStorage",
asyncTask,
nil,
nil,
nil); err != nil {
logger.Get().Error("%s-Task creation failed for delete storage on cluster: %v. error: %v", ctxt, *cluster_id, err)
*resp = utils.WriteResponse(http.StatusInternalServerError, "Task creation failed for storage deletion")
//.........这里部分代码省略.........
开发者ID:skyrings,项目名称:bigfin,代码行数:101,代码来源:storage.go
示例19: CreateStorage
func (s *CephProvider) CreateStorage(req models.RpcRequest, resp *models.RpcResponse) error {
ctxt := req.RpcRequestContext
var request models.AddStorageRequest
if err := json.Unmarshal(req.RpcRequestData, &request); err != nil {
logger.Get().Error("%s - Unbale to parse the request. error: %v", ctxt, err)
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Unbale to parse the request. error: %v", err))
return err
}
// Create the storage pool
cluster_id_str := req.RpcRequestVars["cluster-id"]
cluster_id, err := uuid.Parse(cluster_id_str)
if err != nil {
logger.Get().Error("%s - Error parsing the cluster id: %s. error: %v", ctxt, cluster_id_str, err)
*resp = utils.WriteResponse(http.StatusBadRequest, fmt.Sprintf("Error parsing the cluster id: %s", cluster_id_str))
return err
}
asyncTask := func(t *task.Task) {
sessionCopy := db.GetDatastore().Copy()
defer sessionCopy.Close()
for {
select {
case <-t.StopCh:
return
default:
var cluster models.Cluster
t.UpdateStatus("Started ceph provider storage creation: %v", t.ID)
t.UpdateStatus("Getting cluster details")
// Get cluster details
coll := sessionCopy.DB(conf.SystemConfig.DBConfig.Database).C(models.COLL_NAME_STORAGE_CLUSTERS)
if err := coll.Find(bson.M{"clusterid": *cluster_id}).One(&cluster); err != nil {
utils.FailTask(fmt.Sprintf("Error getting the cluster details for :%v", *cluster_id), fmt.Errorf("%s - %v", ctxt, err), t)
return
}
t.UpdateStatus("Getting a mon from cluster")
monnode, err := GetCalamariMonNode(*cluster_id, ctxt)
if err != nil {
utils.FailTask(fmt.Sprintf("Error getting mon node details for cluster: %v", *cluster_id), fmt.Errorf("%s - %v", ctxt, err), t)
return
}
poolId, ok := createPool(ctxt, *cluster_id, request, t)
if !ok {
return
}
if request.Type != models.STORAGE_TYPE_ERASURE_CODED && len(request.BlockDevices) > 0 {
createBlockDevices(ctxt, monnode.Hostname, cluster, *poolId, request, t)
}
t.UpdateStatus("Syncing SLUs")
if err := SyncOsdStatus(*cluster_id, ctxt); err != nil {
utils.FailTask("Error syncing SLUs", err, t)
return
}
initMonitoringRoutines(ctxt, cluster, (*monnode).Hostname, []interface{}{FetchObjectCount})
_, cStats, err := updateClusterStats(ctxt, cluster, (*monnode).Hostname)
if err == nil {
updateStatsToPools(ctxt, cStats, cluster.ClusterId)
}
skyring_util.UpdateStorageCountToSummaries(ctxt, cluster)
UpdateObjectCountToSummaries(ctxt, cluster)
t.UpdateStatus("Success")
t.Done(models.TASK_STATUS_SUCCESS)
return
}
}
}
if taskId, err := bigfin_task.GetTaskManager().Run(
bigfin_conf.ProviderName,
"CEPH-CreateStorage",
asyncTask,
nil,
nil,
nil); err != nil {
logger.Get().Error("%s-Task creation failed for create storage %s on cluster: %v. error: %v", ctxt, request.Name, *cluster_id, err)
*resp = utils.WriteResponse(http.StatusInternalServerError, "Task creation failed for storage creation")
return err
} else {
*resp = utils.WriteAsyncResponse(taskId, fmt.Sprintf("Task Created for create storage %s on cluster: %v", request.Name, *cluster_id), []byte{})
}
return nil
}
开发者ID:skyrings,项目名称:bigfin,代码行数:87,代码来源:storage.go
示例20: PATCH_ResizeBlockDevice
func (a *App) PATCH_ResizeBlockDevice(w http.ResponseWriter, r *http.Request) {
ctxt, err := GetContext(r)
if err != nil {
logger.Get().Error("Error Getting the context. error: %v", err)
}
|
请发表评论