73 lines
2.3 KiB
Ruby
73 lines
2.3 KiB
Ruby
require "db/mongo/models/mongo_model"
|
|
require "db/mongo/models/model_with_provider"
|
|
|
|
module Devops
|
|
module Model
|
|
class ProviderAccount < MongoModel
|
|
|
|
include ModelWithProvider
|
|
|
|
# attr_accessor :account_name, :description, :ssh_key
|
|
|
|
set_field_validators :account_name, [::Validators::FieldValidator::NotNil,
|
|
::Validators::FieldValidator::FieldType::String,
|
|
::Validators::FieldValidator::NotEmpty,
|
|
::Validators::FieldValidator::Name]
|
|
|
|
set_field_validators :description, [::Validators::FieldValidator::Nil,
|
|
::Validators::FieldValidator::FieldType::String,
|
|
::Validators::FieldValidator::NotEmpty,
|
|
::Validators::FieldValidator::Description]
|
|
|
|
set_field_validators :ssh_key, [::Validators::FieldValidator::NotNil,
|
|
::Validators::FieldValidator::FieldType::String,
|
|
::Validators::FieldValidator::NotEmpty,
|
|
::Validators::FieldValidator::SshKey]
|
|
|
|
ACCOUNT_FIELDS = {
|
|
account_name: "Account name (id)",
|
|
description: "Account description",
|
|
ssh_key: "Ssh key id"
|
|
}
|
|
|
|
def initialize a={}
|
|
self.account_name = a["account_name"]
|
|
self.description = a["description"]
|
|
self.ssh_key = a["ssh_key"]
|
|
self.provider = a["provider"]
|
|
self.created_at = a["created_at"]
|
|
end
|
|
|
|
def to_list_hash
|
|
to_hash
|
|
end
|
|
|
|
def to_hash
|
|
{
|
|
"account_name" => self.account_name,
|
|
"description" => self.description,
|
|
"ssh_key" => self.ssh_key,
|
|
"provider" => self.provider,
|
|
"created_at" => self.created_at
|
|
}
|
|
end
|
|
|
|
def to_mongo_hash
|
|
{
|
|
"_id" => self.account_name,
|
|
"description" => self.description,
|
|
"ssh_key" => self.ssh_key,
|
|
"provider" => self.provider
|
|
}
|
|
end
|
|
|
|
# absent of "id" attribute can cause some inconviniences.
|
|
# for example, we have "record.id" call in InsertCommand
|
|
def id
|
|
account_name
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|