Commit f6c93ea5 authored by duanjinfei's avatar duanjinfei

init commit

parents
File added
.idea
logs
go.sum
nohup.out
package asyncLog
import (
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
"hashrateNode/cache"
hashrateCommon "hashrateNode/common"
vm "hashrateNode/contract/VmContract"
vmCreate "hashrateNode/contract/VmCreateContract"
"hashrateNode/log"
"hashrateNode/models"
"hashrateNode/pveApi"
"hashrateNode/utils"
"math/big"
"strconv"
"strings"
"time"
)
var tranOpts *bind.TransactOpts
var err error
var hostName, fromAddr string
var nonce uint64
func init() {
tranOpts, err = utils.GetTranOpts()
if err != nil {
log.Error("GetTranOpts error:", err)
return
}
hostName = beego.AppConfig.String("pve::host_name")
fromAddr = beego.AppConfig.String("sendTranAddress")
}
func VmCreateContractHandler(vLog types.Log) error {
logs.Info("handle vm create contract logs.")
stakeAbiInfo, _ := abi.JSON(strings.NewReader(vmCreate.VmCreateABI))
{
method := vLog.Topics[0]
switch method.String() {
case hashrateCommon.VmCreateEvent:
{
rp, err := stakeAbiInfo.Unpack("AddCreateVMInfoEvent", vLog.Data)
sockets, _ := new(big.Int).SetString(rp[4].(string), 10)
cores, _ := new(big.Int).SetString(rp[5].(string), 10)
gpuNum, _ := new(big.Int).SetString(rp[7].(string), 10)
memory, _ := new(big.Int).SetString(rp[8].(string), 10)
osType, _ := new(big.Int).SetString(rp[9].(string), 10)
vmCreateEvent := &models.VmConfig{
TaskId: rp[0].(string),
Owner: rp[1].(common.Address),
CallerIp: rp[2].(string),
Cpu: rp[3].(string),
Sockets: sockets,
Cores: cores,
Gpu: rp[6].(string),
GpuNum: gpuNum,
Memory: memory,
OsType: osType,
Disk: bighundred,
}
//vmCreateEvent := &models.VmConfig{}
//err = stakeAbiInfo.UnpackIntoInterface(vmCreateEvent, "AddCreateVMInfoEvent", vLog.Data)
if err != nil {
cache.Redis.LpushByte(hashrateCommon.EventList, utils.Marshal(vmCreateEvent))
}
if !IsCreateVmCondition(vmCreateEvent.CallerIp) {
return nil
}
isSnatch, err := snatchTask(vmCreateEvent)
if err != nil || !isSnatch {
return err
}
}
case hashrateCommon.VmStatusEvent:
{
vmStatusEvent := &models.VmStatusEvent{}
err = stakeAbiInfo.UnpackIntoInterface(vmStatusEvent, "VmStatusEvent", vLog.Data)
if err != nil {
cache.Redis.LpushByte(hashrateCommon.EventList, utils.Marshal(vmStatusEvent))
}
if vmStatusEvent.Progress.Int64() != bighundred.Int64() {
return nil
}
}
}
}
return nil
}
// IsCreateVmCondition 本机是否符合创建Vm的要求
func IsCreateVmCondition(callerIp string) bool {
localIp := beego.AppConfig.String("local_ip")
distance := utils.CalculateDistance(utils.GetIpAddr(callerIp), utils.GetIpAddr(localIp))
if distance <= 1000 {
return true
}
return true
}
// snatchTask 进行抢占任务
func snatchTask(vmCfg *models.VmConfig) (bool, error) {
rpcUrl := beego.AppConfig.String("chain_rpc_url")
client, err := ethclient.Dial(rpcUrl)
if err != nil {
log.Error("Eth client.Dial error:", err)
return false, err
}
defer client.Close()
nonce, err = utils.EthGetTransactionCount(client, fromAddr)
if err != nil {
return false, err
}
vmCreate, err := vmCreate.NewVmCreate(common.HexToAddress(hashrateCommon.VmCreateContract), client)
if err != nil {
log.Error("New vmCreate error:", err)
return false, err
}
// 查询 创建vm的操作系统对应的vmId
updateTranOptsNonce(0)
// 调用合约抢占任务
task, err := vmCreate.SnatchTask(tranOpts, vmCfg.TaskId, vmCfg.Owner)
if err != nil {
log.Error("SnatchTask error:", err)
return false, err
}
log.Info("SnatchTask success:", task.Hash())
ticket, err := pveApi.GetCreateVmTicket()
if err != nil {
return false, err
}
vmId, newId := getCloneVmInfo(vmCfg, ticket)
if vmId == "" || newId == "" {
return false, nil
}
user, password := generateUser()
vm := &models.VM{
VmId: vmId,
NewId: newId,
VmCfg: vmCfg,
Name: fmt.Sprintf("Clone%s", newId),
User: user,
Password: password,
HeaderInfo: ticket,
}
updateTranOptsNonce(1)
updateVmProgress(vmCreate, vm.VmCfg.TaskId, big.NewInt(1), bigTwenty)
// 创建VM、并且设置配置
_, err = pveApi.CreateVm(vm)
if err != nil {
return false, err
}
setRes, err := pveApi.SetVmConfig(vm)
if err != nil || setRes == nil {
return false, err
}
updateTranOptsNonce(1)
updateVmProgress(vmCreate, vm.VmCfg.TaskId, big.NewInt(2), bigThirty)
// 开启虚拟机
_, err = pveApi.StartVm(vm)
if err != nil {
return false, err
}
updateTranOptsNonce(1)
updateVmProgress(vmCreate, vm.VmCfg.TaskId, big.NewInt(3), bigForty)
// 轮训查询状态
for {
vmStatus, err := pveApi.VmStatus(vm)
if err != nil {
return false, err
}
if vmStatus.Status == hashrateCommon.Running {
updateTranOptsNonce(1)
updateVmProgress(vmCreate, vm.VmCfg.TaskId, big.NewInt(4), bigSixty)
break
}
time.Sleep(time.Second * 2)
}
time.Sleep(time.Second * 20)
netWorks, err := pveApi.GetVmNetWork(vm)
if err != nil {
return false, err
}
//loginUser, err := pveApi.SetVmLoginUser(vm)
//if err != nil {
// return false, err
//}
updateVmNetWorkInfo(client, netWorks, vm)
updateVmProgress(vmCreate, vm.VmCfg.TaskId, big.NewInt(5), bighundred)
return true, nil
}
// updateVmNetWorkInfo 更新vm的网络信息
func updateVmNetWorkInfo(client *ethclient.Client, networkInfos []*models.NetworkInfo, vmInfo *models.VM) {
internalIp := ""
for _, netWork := range networkInfos {
if netWork.Name == hashrateCommon.Ens18 {
for _, ipInfo := range netWork.IpAddresses {
if ipInfo.IpAddressType == hashrateCommon.Ipv4 {
internalIp = ipInfo.IpAddress
log.Info("internalIp:", internalIp)
break
}
}
}
}
if internalIp == "" {
log.Error("In networkInfo is not found ip info")
return
}
vmContract, err := vm.NewVm(common.HexToAddress(hashrateCommon.VmContract), client)
if err != nil {
return
}
// 调用NPS 映射外网ip
externalIp := internalIp
externalPort := "22"
vmId := new(big.Int)
vmId.SetString(vmInfo.NewId, 10)
updateTranOptsNonce(1)
addVirtualMachine, err := vmContract.AddVirtualMachine(tranOpts, vmInfo.VmCfg.Owner, vmInfo.VmCfg.TaskId, vmId, "", vmInfo.VmCfg.TaskId, hostName, vmInfo.Name, "ubuntu")
if err != nil {
return
}
log.Info("Add virtual machine success:", addVirtualMachine.Hash())
updateTranOptsNonce(1)
updateVmNetworkInfo, err := vmContract.UpdateVmNetworkInfo(tranOpts, vmId, "", externalIp, externalPort, "", "", "")
if err != nil {
return
}
log.Info("Update virtual machine networkInfo success:", updateVmNetworkInfo.Hash())
updateTranOptsNonce(1)
updateVMInfoEvent, err := vmContract.UpdateVMInfoEvent(tranOpts, vmId, vmInfo.VmCfg.Sockets.Uint64(), vmInfo.VmCfg.Memory.Uint64(), vmInfo.VmCfg.GpuNum.Uint64(), vmInfo.VmCfg.Disk)
if err != nil {
return
}
log.Info("Update virtual machine info success:", updateVMInfoEvent.Hash())
updateTranOptsNonce(1)
userTran, err := vmContract.AddVmUser(tranOpts, vmId, vmInfo.User, vmInfo.Password)
if err != nil {
log.Error("Add vm user error:", err)
return
}
log.Info("Update virtual machine info success:", userTran.Hash())
}
func generateUser() (string, string) {
return "cloud", "123456"
}
// getCloneVmInfo 获取能够克隆的vmId
func getCloneVmInfo(vmInfo *models.VmConfig, headerInfo *models.HeaderInfo) (string, string) {
qemuList, err := pveApi.GetQemuList(headerInfo)
if err != nil {
return "", ""
}
var maxVmId int64
for _, qemu := range qemuList {
if qemu.VmId > maxVmId {
maxVmId = qemu.VmId
}
}
maxVmId++
return "104", strconv.FormatInt(maxVmId, 10)
}
// updateVmProgress 更新vm的创建进度
func updateVmProgress(contractInstance *vmCreate.VmCreate, taskId string, stage *big.Int, progress *big.Int) bool {
task, err := contractInstance.UpdateVmCreateProgress(tranOpts, taskId, stage, progress)
if err != nil {
log.Error("UpdateVmCreateProgress error:", err)
return false
}
log.Info("Update vm create progress success:", task.Hash())
return true
}
func updateTranOptsNonce(incrementNum uint64) {
nonce += incrementNum
nonceUint64 := new(big.Int).SetUint64(nonce)
tranOpts.Nonce = nonceUint64
}
package asyncLog
import (
"context"
"fmt"
"github.com/astaxie/beego"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
"hashrateNode/cache"
hashrateCommon "hashrateNode/common"
"hashrateNode/log"
"math/big"
"strings"
"time"
)
const (
LastSyncBlockKey = "lastSyncBlock"
)
var (
pullTask *PullEvent
bigOne = big.NewInt(1)
bigTen = big.NewInt(10)
bigTwenty = big.NewInt(20)
bigThirty = big.NewInt(30)
bigForty = big.NewInt(40)
bigFifty = big.NewInt(50)
bigSixty = big.NewInt(60)
bigSeventy = big.NewInt(70)
bigEighty = big.NewInt(80)
bigNinety = big.NewInt(90)
bighundred = big.NewInt(100)
bigK = big.NewInt(1000)
)
type logHandler func(log types.Log) error
type PullEvent struct {
ctx context.Context
client *ethclient.Client
lastBlock *big.Int
contractList []common.Address
contractHandler map[common.Address]logHandler
}
func init() {
var err error
rpc := beego.AppConfig.String("chain_rpc_url")
deployBlock := beego.AppConfig.String("deployedBlock")
log.Info("connect chain rpc url:", rpc)
pullTask = &PullEvent{contractHandler: make(map[common.Address]logHandler)}
client, err := ethclient.Dial(rpc)
if err != nil {
panic(fmt.Sprintf("ethclient dial failed, err:%s", err.Error()))
} else {
pullTask.client = client
lastBlock := cache.Redis.Get(LastSyncBlockKey)
if len(lastBlock) == 0 {
lastBlock = deployBlock
}
blockNumber, _ := new(big.Int).SetString(lastBlock, 10)
pullTask.lastBlock = blockNumber
}
pullTask.ctx = context.Background()
pullTask.contractList = make([]common.Address, 0)
{
vmCreateAddrArr := getAddress(hashrateCommon.VmCreateContract)
for _, stakeAddr := range vmCreateAddrArr {
if len(stakeAddr) > 0 {
addr := common.HexToAddress(stakeAddr)
pullTask.contractList = append(pullTask.contractList, addr)
pullTask.contractHandler[addr] = VmCreateContractHandler
}
}
}
}
func SyncLogs() {
pullTask.GetLogs()
}
func (p *PullEvent) GetLogs() {
query := ethereum.FilterQuery{}
query.FromBlock = p.lastBlock
query.ToBlock = new(big.Int).Add(p.lastBlock, big.NewInt(1))
query.Addresses = p.contractList
for {
query.FromBlock = p.lastBlock
log.Info("start filter start at ", p.lastBlock.Text(10))
height, _ := p.client.BlockNumber(p.ctx)
if height <= p.lastBlock.Uint64() {
time.Sleep(time.Second)
continue
} else if height > 1000 && (height-1000) >= p.lastBlock.Uint64() {
query.ToBlock = new(big.Int).Add(p.lastBlock, bigK)
} else if height > 100 && (height-100) >= p.lastBlock.Uint64() {
query.ToBlock = new(big.Int).Add(p.lastBlock, bighundred)
} else if height > 10 && (height-10) >= p.lastBlock.Uint64() {
query.ToBlock = new(big.Int).Add(p.lastBlock, bigTen)
} else {
query.ToBlock = new(big.Int).Add(p.lastBlock, bigOne)
}
allLogs, err := p.client.FilterLogs(p.ctx, query)
if err != nil {
log.Error("filter logs failed", err)
continue
}
if len(allLogs) > 0 {
for _, vlog := range allLogs {
handle, exist := p.contractHandler[vlog.Address]
if exist {
handle(vlog)
}
}
}
p.lastBlock = new(big.Int).Add(query.ToBlock, bigOne)
cache.Redis.Set(LastSyncBlockKey, p.lastBlock.Text(10))
}
}
func getAddress(multiAddrArr string) []string {
addrArr := strings.Split(multiAddrArr, ",")
ret := make([]string, 0)
for _, addr := range addrArr {
if len(addr) > 0 {
ret = append(ret, addr)
}
}
return ret
}
package cache
import (
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
"github.com/garyburd/redigo/redis"
red "hashrateNode/cache/redis"
"time"
)
var Redis red.IRedis
var pool *redis.Pool
func init() {
conn := beego.AppConfig.String("cache::conn")
dbNum := beego.AppConfig.String("cache::dbNum")
password := beego.AppConfig.String("cache::password")
if err := NewPool(conn, dbNum, password); err != nil {
logs.Error(err)
return
}
Redis = red.NewStoreRedis(pool)
}
func NewPool(conn, dbNum, password string) error {
fmt.Println("redis连接池里的连接为空,重新创建连接池,starting...")
pool = &redis.Pool{
MaxIdle: 50, //最大空闲连接数
MaxActive: 0, //若为0,则活跃数没有限制
Wait: true,
IdleTimeout: 30 * time.Second, //最大空闲连接时间
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", conn)
if err != nil {
panic(err)
return nil, err
}
// 设置密码
if _, err := c.Do("AUTH", password); err != nil {
panic(err)
return nil, err
}
// 选择db
c.Do("SELECT", dbNum)
return c, nil
},
}
return nil
}
package redis
type IRedis interface {
Set(key, value string) error
Get(key string) string
LpushByte(key string, value []byte) error
Close()
RPopByte(key string) ([]byte, error)
LLen(key string) (int64, error)
RPopLPushByte(key, key1 string) ([]byte, error)
}
package redis
import (
"github.com/garyburd/redigo/redis"
"hashrateNode/log"
"reflect"
"strings"
"unsafe"
)
type StoreRedis struct {
pool *redis.Pool
}
func NewStoreRedis(pool *redis.Pool) IRedis {
sr := new(StoreRedis)
sr.pool = pool
return sr
}
/*
*
此方法没有使用
*/
func (s *StoreRedis) errorLogic(e error) {
i := strings.Index(e.Error(), "connect: connection refused")
if i == -1 {
log.Warning(i, "不包含")
}
}
/*
*
设置key,value数据
*/
func (s *StoreRedis) Set(key, value string) error {
_, err := s.pool.Get().Do("SET", key, value)
defer s.Close()
if err != nil {
return err
}
return nil
}
/*
*
设置key,value数据
*/
func (s *StoreRedis) SetBytes(key string, value []byte) error {
_, err := s.pool.Get().Do("SET", key, value)
defer s.Close()
if err != nil {
return err
}
return nil
}
/*
*
设置key的过期时间
*/
func (s *StoreRedis) SetKvAndExp(key, value string, expire int) error {
_, err := s.pool.Get().Do("SET", key, value, "EX", expire)
defer s.Close()
if err != nil {
return err
}
return nil
}
func (s *StoreRedis) SetKvInt(key string, value int) error {
_, err := s.pool.Get().Do("SET", key, value)
defer s.Close()
if err != nil {
return err
}
return nil
}
/*
*
根据key获取对应数据
*/
func (s *StoreRedis) Get(key string) string {
value, err := redis.String(s.pool.Get().Do("GET", key))
defer s.Close()
if err != nil {
log.Error("redis get failed:", err)
}
return value
}
/*
*
根据key获取对应数据
*/
func (s *StoreRedis) GetBytes(key string) []byte {
value, err := s.pool.Get().Do("GET", key)
defer s.Close()
if err != nil {
log.Error("redis get failed:", err)
}
if value == nil {
return nil
}
return value.([]byte)
}
/*
*
判断key是否存在
*/
func (s *StoreRedis) IsKeyExists(key string) bool {
is_key_exit, _ := redis.Bool(s.pool.Get().Do("EXISTS", key))
defer s.Close()
return is_key_exit
}
/*
*
删除key
*/
func (s *StoreRedis) Del(key string) bool {
is_key_delete, err := redis.Bool(s.pool.Get().Do("DEL", key))
defer s.Close()
if err != nil {
log.Error("error:", err)
}
return is_key_delete
}
/*
*
删除key
*/
func (s *StoreRedis) HDel(key string, field string) bool {
is_key_delete, err := redis.Bool(s.pool.Get().Do("HDEL", key, field))
defer s.Close()
if err != nil {
log.Error("error:", err)
}
return is_key_delete
}
/*
*
对象转换成json后进行存储
*/
func (s *StoreRedis) Setnx(key string, value []byte) error {
_, err := s.pool.Get().Do("SETNX", key, value)
defer s.Close()
if err != nil {
return err
}
return nil
}
func (s *StoreRedis) LpushByte(key string, value []byte) error {
_, err := s.pool.Get().Do("lpush", key, value)
if err != nil {
defer s.Close()
return err
}
defer s.Close()
return nil
}
func (s *StoreRedis) RPopByte(key string) ([]byte, error) {
v, err := redis.Bytes(s.pool.Get().Do("rpop", key))
if err != nil {
defer s.Close()
return nil, err
}
defer s.Close()
return v, nil
}
func (s *StoreRedis) LPop(key string) (string, error) {
v, err := s.pool.Get().Do("lpop", key)
if err != nil {
defer s.Close()
return "", err
}
defer s.Close()
if v == nil {
return "", nil
}
vv := BytesToString(v.([]byte))
return vv, nil
}
func BytesToString(b []byte) string {
bh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
sh := reflect.StringHeader{bh.Data, bh.Len}
return *(*string)(unsafe.Pointer(&sh))
}
func (s *StoreRedis) LLen(key string) (int64, error) {
v, err := s.pool.Get().Do("llen", key)
if err != nil {
defer s.Close()
return 0, err
}
defer s.Close()
if v == nil {
return 0, nil
}
return v.(int64), nil
}
func (s *StoreRedis) Close() {
s.pool.Get().Close()
}
/*
*
Hincryby方法
*/
func (s *StoreRedis) HINCRBY(key, field string) {
s.pool.Get().Do("HINCRBY", key, field, 1)
defer s.Close()
}
/*
*
HGet方法
*/
func (s *StoreRedis) HGet(key, field string) (interface{}, error) {
value, err := s.pool.Get().Do("HGET", key, field)
defer s.Close()
return value, err
}
/*
*
HGetAll方法
*/
func (s *StoreRedis) HGetAll(key string) ([][]byte, error) {
inter, err := redis.ByteSlices(s.pool.Get().Do("HGetAll", key))
defer s.Close()
return inter, err
}
/*
*
Hset方法
*/
func (s *StoreRedis) HSet(key string, field string, value string) (interface{}, error) {
inter, err := s.pool.Get().Do("HSET", key, field, value)
defer s.Close()
return inter, err
}
/*
*
Hset方法
*/
func (s *StoreRedis) HSetByte(key string, field string, value []byte) (interface{}, error) {
inter, err := s.pool.Get().Do("HSET", key, field, value)
defer s.Close()
return inter, err
}
/*
*
SADD方法
*/
func (s *StoreRedis) SAdd(args []interface{}) (interface{}, error) {
inter, err := s.pool.Get().Do("SADD", args...)
defer s.Close()
return inter, err
}
/*
*
Scard方法
*/
func (s *StoreRedis) SCard(key string) (interface{}, error) {
inter, err := s.pool.Get().Do("SCARD", key)
defer s.Close()
return inter, err
}
/*
*
Spop方法
*/
func (s *StoreRedis) SPop(key string) (interface{}, error) {
inter, err := s.pool.Get().Do("SPOP", key)
defer s.Close()
vv := BytesToString(inter.([]byte))
return vv, err
}
func (s *StoreRedis) RPopLPushByte(key, key1 string) ([]byte, error) {
v, err := redis.Bytes(s.pool.Get().Do("RPOPLPUSH", key, key1))
if err != nil {
defer s.Close()
return nil, err
}
defer s.Close()
return v, nil
}
package common
const (
Stopped = "stopped"
Running = "running"
Ens18 = "ens18"
Ipv4 = "ipv4"
Ipv6 = "ipv6"
SuccessCode = 200
)
package common
const (
EventList = "event"
)
// VmCreateEvent 虚拟机创建事件
const (
VmCreateEvent = "0x95a3474b7f17a50dbe31a066616a43275e294ecc845b2b15719fc1020a530828"
VmStatusEvent = "0x6d74ccc6dd7ac077e79f02d90ad1be6fc9b7a6fc9294398d29659ba748efda7a"
)
// VmCreateContract 虚拟机创建合约
const (
VmCreateContract = "0x4a5001cC1CF65392Ea3386254c5eF0427E872a5B"
VmContract = "0x17aa4736acd9d5043c43d80Fb432699990189aCc"
)
appname = hashrateNode
httpport = 8080
runmode = dev
chain_rpc_url = http://127.0.0.1:7545
chainID = 5777
local_ip = 192.168.1.108
secret = bdcd61d5-6d48-4a0b-ac74-509ec0c3ecde
sendTranAddress = 0xdeD9a4A4983D2025251FDE94c52Cb63A134f8f57
sendTranPrv = 0x2556a944727463313701b8892ea4dca8113461af4bbc059ced93668b90520c42
deployedBlock = 1
[pve]
ip = 192.168.1.230
port = 8006
user = root@pam
pass = "2023!@#WSX#@!"
host_name = "node-230"
ticket_api = /api2/json/access/ticket
nodes_api = /api2/json/nodes
access_prefix = "PVEAuthCookie="
# redis config
[cache]
collectionName = redis
conn = 127.0.0.1:6379
dbNum = 1
password = 123456
\ No newline at end of file
[
{
"inputs": [
{
"internalType": "address",
"name": "const",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "vmId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "intranetIp",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "externalIp",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "exSshPort",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "exVncPort",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "inSshPort",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "inVncPort",
"type": "string"
}
],
"name": "UpdateNetworkInfoEvent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "vmId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "cpuCost",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "memoryCost",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "gpuCost",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "diskCost",
"type": "string"
}
],
"name": "UpdateResourceInfoEvent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "vmId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint64",
"name": "cpuNum",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "memoryNum",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "gpuNum",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint256",
"name": "disk",
"type": "uint256"
}
],
"name": "UpdateVMInfoEvent",
"type": "event"
},
{
"inputs": [],
"name": "_const",
"outputs": [
{
"internalType": "contract ICloudConstant",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "addAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "string",
"name": "taskId",
"type": "string"
},
{
"internalType": "uint256",
"name": "vmId",
"type": "uint256"
},
{
"internalType": "string",
"name": "clusterId",
"type": "string"
},
{
"internalType": "string",
"name": "globalIdentify",
"type": "string"
},
{
"internalType": "string",
"name": "hostId",
"type": "string"
},
{
"internalType": "string",
"name": "vmName",
"type": "string"
},
{
"internalType": "string",
"name": "os",
"type": "string"
}
],
"name": "addVirtualMachine",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "vmid",
"type": "uint256"
},
{
"internalType": "string",
"name": "user",
"type": "string"
},
{
"internalType": "string",
"name": "pwd",
"type": "string"
}
],
"name": "addVmUser",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "delAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "taskId",
"type": "string"
}
],
"name": "getVmInfo",
"outputs": [
{
"internalType": "string",
"name": "externalIp",
"type": "string"
},
{
"internalType": "string",
"name": "externalPort",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
}
],
"name": "isAdmin",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "const",
"type": "address"
}
],
"name": "setConstant",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "vmId",
"type": "uint256"
},
{
"internalType": "string",
"name": "cpuCost",
"type": "string"
},
{
"internalType": "string",
"name": "memoryCost",
"type": "string"
},
{
"internalType": "string",
"name": "gpuCost",
"type": "string"
},
{
"internalType": "string",
"name": "diskCost",
"type": "string"
}
],
"name": "updateResourceInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "vmId",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "cpuNum",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "memoryNum",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "gpuNum",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "disk",
"type": "uint256"
}
],
"name": "updateVMInfoEvent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "vmId",
"type": "uint256"
},
{
"internalType": "string",
"name": "intranetIp",
"type": "string"
},
{
"internalType": "string",
"name": "externalIp",
"type": "string"
},
{
"internalType": "string",
"name": "exSshPort",
"type": "string"
},
{
"internalType": "string",
"name": "exVncPort",
"type": "string"
},
{
"internalType": "string",
"name": "inSshPort",
"type": "string"
},
{
"internalType": "string",
"name": "inVncPort",
"type": "string"
}
],
"name": "updateVmNetworkInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "vmData",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
]
\ No newline at end of file
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package vm
import (
"errors"
"math/big"
"strings"
ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/event"
)
// Reference imports to suppress errors if they are not otherwise used.
var (
_ = errors.New
_ = big.NewInt
_ = strings.NewReader
_ = ethereum.NotFound
_ = bind.Bind
_ = common.Big1
_ = types.BloomLookup
_ = event.NewSubscription
)
// VmMetaData contains all meta data concerning the Vm contract.
var VmMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"const\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"vmId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"intranetIp\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"externalIp\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"exSshPort\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"exVncPort\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"inSshPort\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"inVncPort\",\"type\":\"string\"}],\"name\":\"UpdateNetworkInfoEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"vmId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"cpuCost\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memoryCost\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gpuCost\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"diskCost\",\"type\":\"string\"}],\"name\":\"UpdateResourceInfoEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"vmId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"cpuNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"memoryNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"gpuNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disk\",\"type\":\"uint256\"}],\"name\":\"UpdateVMInfoEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_const\",\"outputs\":[{\"internalType\":\"contractICloudConstant\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"vmId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"clusterId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"globalIdentify\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"hostId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"vmName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"os\",\"type\":\"string\"}],\"name\":\"addVirtualMachine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vmid\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"user\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"pwd\",\"type\":\"string\"}],\"name\":\"addVmUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"delAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"}],\"name\":\"getVmInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"externalIp\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"externalPort\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"const\",\"type\":\"address\"}],\"name\":\"setConstant\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vmId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"cpuCost\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"memoryCost\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"gpuCost\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"diskCost\",\"type\":\"string\"}],\"name\":\"updateResourceInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vmId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"cpuNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"memoryNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gpuNum\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disk\",\"type\":\"uint256\"}],\"name\":\"updateVMInfoEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vmId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"intranetIp\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"externalIp\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"exSshPort\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"exVncPort\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"inSshPort\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"inVncPort\",\"type\":\"string\"}],\"name\":\"updateVmNetworkInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"vmData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
}
// VmABI is the input ABI used to generate the binding from.
// Deprecated: Use VmMetaData.ABI instead.
var VmABI = VmMetaData.ABI
// Vm is an auto generated Go binding around an Ethereum contract.
type Vm struct {
VmCaller // Read-only binding to the contract
VmTransactor // Write-only binding to the contract
VmFilterer // Log filterer for contract events
}
// VmCaller is an auto generated read-only Go binding around an Ethereum contract.
type VmCaller struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// VmTransactor is an auto generated write-only Go binding around an Ethereum contract.
type VmTransactor struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// VmFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
type VmFilterer struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// VmSession is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type VmSession struct {
Contract *Vm // Generic contract binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// VmCallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type VmCallerSession struct {
Contract *VmCaller // Generic contract caller binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
}
// VmTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type VmTransactorSession struct {
Contract *VmTransactor // Generic contract transactor binding to set the session for
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// VmRaw is an auto generated low-level Go binding around an Ethereum contract.
type VmRaw struct {
Contract *Vm // Generic contract binding to access the raw methods on
}
// VmCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type VmCallerRaw struct {
Contract *VmCaller // Generic read-only contract binding to access the raw methods on
}
// VmTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type VmTransactorRaw struct {
Contract *VmTransactor // Generic write-only contract binding to access the raw methods on
}
// NewVm creates a new instance of Vm, bound to a specific deployed contract.
func NewVm(address common.Address, backend bind.ContractBackend) (*Vm, error) {
contract, err := bindVm(address, backend, backend, backend)
if err != nil {
return nil, err
}
return &Vm{VmCaller: VmCaller{contract: contract}, VmTransactor: VmTransactor{contract: contract}, VmFilterer: VmFilterer{contract: contract}}, nil
}
// NewVmCaller creates a new read-only instance of Vm, bound to a specific deployed contract.
func NewVmCaller(address common.Address, caller bind.ContractCaller) (*VmCaller, error) {
contract, err := bindVm(address, caller, nil, nil)
if err != nil {
return nil, err
}
return &VmCaller{contract: contract}, nil
}
// NewVmTransactor creates a new write-only instance of Vm, bound to a specific deployed contract.
func NewVmTransactor(address common.Address, transactor bind.ContractTransactor) (*VmTransactor, error) {
contract, err := bindVm(address, nil, transactor, nil)
if err != nil {
return nil, err
}
return &VmTransactor{contract: contract}, nil
}
// NewVmFilterer creates a new log filterer instance of Vm, bound to a specific deployed contract.
func NewVmFilterer(address common.Address, filterer bind.ContractFilterer) (*VmFilterer, error) {
contract, err := bindVm(address, nil, nil, filterer)
if err != nil {
return nil, err
}
return &VmFilterer{contract: contract}, nil
}
// bindVm binds a generic wrapper to an already deployed contract.
func bindVm(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
parsed, err := abi.JSON(strings.NewReader(VmABI))
if err != nil {
return nil, err
}
return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_Vm *VmRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _Vm.Contract.VmCaller.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_Vm *VmRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _Vm.Contract.VmTransactor.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_Vm *VmRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _Vm.Contract.VmTransactor.contract.Transact(opts, method, params...)
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_Vm *VmCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _Vm.Contract.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_Vm *VmTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _Vm.Contract.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_Vm *VmTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _Vm.Contract.contract.Transact(opts, method, params...)
}
// Const is a free data retrieval call binding the contract method 0xe76dba42.
//
// Solidity: function _const() view returns(address)
func (_Vm *VmCaller) Const(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
err := _Vm.contract.Call(opts, &out, "_const")
if err != nil {
return *new(common.Address), err
}
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
// Const is a free data retrieval call binding the contract method 0xe76dba42.
//
// Solidity: function _const() view returns(address)
func (_Vm *VmSession) Const() (common.Address, error) {
return _Vm.Contract.Const(&_Vm.CallOpts)
}
// Const is a free data retrieval call binding the contract method 0xe76dba42.
//
// Solidity: function _const() view returns(address)
func (_Vm *VmCallerSession) Const() (common.Address, error) {
return _Vm.Contract.Const(&_Vm.CallOpts)
}
// GetVmInfo is a free data retrieval call binding the contract method 0x165e73cd.
//
// Solidity: function getVmInfo(string taskId) view returns(string externalIp, string externalPort)
func (_Vm *VmCaller) GetVmInfo(opts *bind.CallOpts, taskId string) (struct {
ExternalIp string
ExternalPort string
}, error) {
var out []interface{}
err := _Vm.contract.Call(opts, &out, "getVmInfo", taskId)
outstruct := new(struct {
ExternalIp string
ExternalPort string
})
if err != nil {
return *outstruct, err
}
outstruct.ExternalIp = *abi.ConvertType(out[0], new(string)).(*string)
outstruct.ExternalPort = *abi.ConvertType(out[1], new(string)).(*string)
return *outstruct, err
}
// GetVmInfo is a free data retrieval call binding the contract method 0x165e73cd.
//
// Solidity: function getVmInfo(string taskId) view returns(string externalIp, string externalPort)
func (_Vm *VmSession) GetVmInfo(taskId string) (struct {
ExternalIp string
ExternalPort string
}, error) {
return _Vm.Contract.GetVmInfo(&_Vm.CallOpts, taskId)
}
// GetVmInfo is a free data retrieval call binding the contract method 0x165e73cd.
//
// Solidity: function getVmInfo(string taskId) view returns(string externalIp, string externalPort)
func (_Vm *VmCallerSession) GetVmInfo(taskId string) (struct {
ExternalIp string
ExternalPort string
}, error) {
return _Vm.Contract.GetVmInfo(&_Vm.CallOpts, taskId)
}
// IsAdmin is a free data retrieval call binding the contract method 0x24d7806c.
//
// Solidity: function isAdmin(address _addr) view returns(bool)
func (_Vm *VmCaller) IsAdmin(opts *bind.CallOpts, _addr common.Address) (bool, error) {
var out []interface{}
err := _Vm.contract.Call(opts, &out, "isAdmin", _addr)
if err != nil {
return *new(bool), err
}
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
return out0, err
}
// IsAdmin is a free data retrieval call binding the contract method 0x24d7806c.
//
// Solidity: function isAdmin(address _addr) view returns(bool)
func (_Vm *VmSession) IsAdmin(_addr common.Address) (bool, error) {
return _Vm.Contract.IsAdmin(&_Vm.CallOpts, _addr)
}
// IsAdmin is a free data retrieval call binding the contract method 0x24d7806c.
//
// Solidity: function isAdmin(address _addr) view returns(bool)
func (_Vm *VmCallerSession) IsAdmin(_addr common.Address) (bool, error) {
return _Vm.Contract.IsAdmin(&_Vm.CallOpts, _addr)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_Vm *VmCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
err := _Vm.contract.Call(opts, &out, "owner")
if err != nil {
return *new(common.Address), err
}
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_Vm *VmSession) Owner() (common.Address, error) {
return _Vm.Contract.Owner(&_Vm.CallOpts)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_Vm *VmCallerSession) Owner() (common.Address, error) {
return _Vm.Contract.Owner(&_Vm.CallOpts)
}
// VmData is a free data retrieval call binding the contract method 0x2d9d87d7.
//
// Solidity: function vmData(uint256 , uint256 ) view returns(string)
func (_Vm *VmCaller) VmData(opts *bind.CallOpts, arg0 *big.Int, arg1 *big.Int) (string, error) {
var out []interface{}
err := _Vm.contract.Call(opts, &out, "vmData", arg0, arg1)
if err != nil {
return *new(string), err
}
out0 := *abi.ConvertType(out[0], new(string)).(*string)
return out0, err
}
// VmData is a free data retrieval call binding the contract method 0x2d9d87d7.
//
// Solidity: function vmData(uint256 , uint256 ) view returns(string)
func (_Vm *VmSession) VmData(arg0 *big.Int, arg1 *big.Int) (string, error) {
return _Vm.Contract.VmData(&_Vm.CallOpts, arg0, arg1)
}
// VmData is a free data retrieval call binding the contract method 0x2d9d87d7.
//
// Solidity: function vmData(uint256 , uint256 ) view returns(string)
func (_Vm *VmCallerSession) VmData(arg0 *big.Int, arg1 *big.Int) (string, error) {
return _Vm.Contract.VmData(&_Vm.CallOpts, arg0, arg1)
}
// AddAdmin is a paid mutator transaction binding the contract method 0x70480275.
//
// Solidity: function addAdmin(address _admin) returns()
func (_Vm *VmTransactor) AddAdmin(opts *bind.TransactOpts, _admin common.Address) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "addAdmin", _admin)
}
// AddAdmin is a paid mutator transaction binding the contract method 0x70480275.
//
// Solidity: function addAdmin(address _admin) returns()
func (_Vm *VmSession) AddAdmin(_admin common.Address) (*types.Transaction, error) {
return _Vm.Contract.AddAdmin(&_Vm.TransactOpts, _admin)
}
// AddAdmin is a paid mutator transaction binding the contract method 0x70480275.
//
// Solidity: function addAdmin(address _admin) returns()
func (_Vm *VmTransactorSession) AddAdmin(_admin common.Address) (*types.Transaction, error) {
return _Vm.Contract.AddAdmin(&_Vm.TransactOpts, _admin)
}
// AddVirtualMachine is a paid mutator transaction binding the contract method 0x7c95f48f.
//
// Solidity: function addVirtualMachine(address owner, string taskId, uint256 vmId, string clusterId, string globalIdentify, string hostId, string vmName, string os) returns()
func (_Vm *VmTransactor) AddVirtualMachine(opts *bind.TransactOpts, owner common.Address, taskId string, vmId *big.Int, clusterId string, globalIdentify string, hostId string, vmName string, os string) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "addVirtualMachine", owner, taskId, vmId, clusterId, globalIdentify, hostId, vmName, os)
}
// AddVirtualMachine is a paid mutator transaction binding the contract method 0x7c95f48f.
//
// Solidity: function addVirtualMachine(address owner, string taskId, uint256 vmId, string clusterId, string globalIdentify, string hostId, string vmName, string os) returns()
func (_Vm *VmSession) AddVirtualMachine(owner common.Address, taskId string, vmId *big.Int, clusterId string, globalIdentify string, hostId string, vmName string, os string) (*types.Transaction, error) {
return _Vm.Contract.AddVirtualMachine(&_Vm.TransactOpts, owner, taskId, vmId, clusterId, globalIdentify, hostId, vmName, os)
}
// AddVirtualMachine is a paid mutator transaction binding the contract method 0x7c95f48f.
//
// Solidity: function addVirtualMachine(address owner, string taskId, uint256 vmId, string clusterId, string globalIdentify, string hostId, string vmName, string os) returns()
func (_Vm *VmTransactorSession) AddVirtualMachine(owner common.Address, taskId string, vmId *big.Int, clusterId string, globalIdentify string, hostId string, vmName string, os string) (*types.Transaction, error) {
return _Vm.Contract.AddVirtualMachine(&_Vm.TransactOpts, owner, taskId, vmId, clusterId, globalIdentify, hostId, vmName, os)
}
// AddVmUser is a paid mutator transaction binding the contract method 0x388911d6.
//
// Solidity: function addVmUser(uint256 vmid, string user, string pwd) returns()
func (_Vm *VmTransactor) AddVmUser(opts *bind.TransactOpts, vmid *big.Int, user string, pwd string) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "addVmUser", vmid, user, pwd)
}
// AddVmUser is a paid mutator transaction binding the contract method 0x388911d6.
//
// Solidity: function addVmUser(uint256 vmid, string user, string pwd) returns()
func (_Vm *VmSession) AddVmUser(vmid *big.Int, user string, pwd string) (*types.Transaction, error) {
return _Vm.Contract.AddVmUser(&_Vm.TransactOpts, vmid, user, pwd)
}
// AddVmUser is a paid mutator transaction binding the contract method 0x388911d6.
//
// Solidity: function addVmUser(uint256 vmid, string user, string pwd) returns()
func (_Vm *VmTransactorSession) AddVmUser(vmid *big.Int, user string, pwd string) (*types.Transaction, error) {
return _Vm.Contract.AddVmUser(&_Vm.TransactOpts, vmid, user, pwd)
}
// DelAdmin is a paid mutator transaction binding the contract method 0x62d91855.
//
// Solidity: function delAdmin(address _admin) returns()
func (_Vm *VmTransactor) DelAdmin(opts *bind.TransactOpts, _admin common.Address) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "delAdmin", _admin)
}
// DelAdmin is a paid mutator transaction binding the contract method 0x62d91855.
//
// Solidity: function delAdmin(address _admin) returns()
func (_Vm *VmSession) DelAdmin(_admin common.Address) (*types.Transaction, error) {
return _Vm.Contract.DelAdmin(&_Vm.TransactOpts, _admin)
}
// DelAdmin is a paid mutator transaction binding the contract method 0x62d91855.
//
// Solidity: function delAdmin(address _admin) returns()
func (_Vm *VmTransactorSession) DelAdmin(_admin common.Address) (*types.Transaction, error) {
return _Vm.Contract.DelAdmin(&_Vm.TransactOpts, _admin)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_Vm *VmTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "renounceOwnership")
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_Vm *VmSession) RenounceOwnership() (*types.Transaction, error) {
return _Vm.Contract.RenounceOwnership(&_Vm.TransactOpts)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_Vm *VmTransactorSession) RenounceOwnership() (*types.Transaction, error) {
return _Vm.Contract.RenounceOwnership(&_Vm.TransactOpts)
}
// SetConstant is a paid mutator transaction binding the contract method 0xc88e7e42.
//
// Solidity: function setConstant(address const) returns()
func (_Vm *VmTransactor) SetConstant(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "setConstant", arg0)
}
// SetConstant is a paid mutator transaction binding the contract method 0xc88e7e42.
//
// Solidity: function setConstant(address const) returns()
func (_Vm *VmSession) SetConstant(arg0 common.Address) (*types.Transaction, error) {
return _Vm.Contract.SetConstant(&_Vm.TransactOpts, arg0)
}
// SetConstant is a paid mutator transaction binding the contract method 0xc88e7e42.
//
// Solidity: function setConstant(address const) returns()
func (_Vm *VmTransactorSession) SetConstant(arg0 common.Address) (*types.Transaction, error) {
return _Vm.Contract.SetConstant(&_Vm.TransactOpts, arg0)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_Vm *VmTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "transferOwnership", newOwner)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_Vm *VmSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
return _Vm.Contract.TransferOwnership(&_Vm.TransactOpts, newOwner)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_Vm *VmTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
return _Vm.Contract.TransferOwnership(&_Vm.TransactOpts, newOwner)
}
// UpdateResourceInfo is a paid mutator transaction binding the contract method 0xb46831f8.
//
// Solidity: function updateResourceInfo(uint256 vmId, string cpuCost, string memoryCost, string gpuCost, string diskCost) returns()
func (_Vm *VmTransactor) UpdateResourceInfo(opts *bind.TransactOpts, vmId *big.Int, cpuCost string, memoryCost string, gpuCost string, diskCost string) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "updateResourceInfo", vmId, cpuCost, memoryCost, gpuCost, diskCost)
}
// UpdateResourceInfo is a paid mutator transaction binding the contract method 0xb46831f8.
//
// Solidity: function updateResourceInfo(uint256 vmId, string cpuCost, string memoryCost, string gpuCost, string diskCost) returns()
func (_Vm *VmSession) UpdateResourceInfo(vmId *big.Int, cpuCost string, memoryCost string, gpuCost string, diskCost string) (*types.Transaction, error) {
return _Vm.Contract.UpdateResourceInfo(&_Vm.TransactOpts, vmId, cpuCost, memoryCost, gpuCost, diskCost)
}
// UpdateResourceInfo is a paid mutator transaction binding the contract method 0xb46831f8.
//
// Solidity: function updateResourceInfo(uint256 vmId, string cpuCost, string memoryCost, string gpuCost, string diskCost) returns()
func (_Vm *VmTransactorSession) UpdateResourceInfo(vmId *big.Int, cpuCost string, memoryCost string, gpuCost string, diskCost string) (*types.Transaction, error) {
return _Vm.Contract.UpdateResourceInfo(&_Vm.TransactOpts, vmId, cpuCost, memoryCost, gpuCost, diskCost)
}
// UpdateVMInfoEvent is a paid mutator transaction binding the contract method 0xa33d9a98.
//
// Solidity: function updateVMInfoEvent(uint256 vmId, uint64 cpuNum, uint64 memoryNum, uint64 gpuNum, uint256 disk) returns()
func (_Vm *VmTransactor) UpdateVMInfoEvent(opts *bind.TransactOpts, vmId *big.Int, cpuNum uint64, memoryNum uint64, gpuNum uint64, disk *big.Int) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "updateVMInfoEvent", vmId, cpuNum, memoryNum, gpuNum, disk)
}
// UpdateVMInfoEvent is a paid mutator transaction binding the contract method 0xa33d9a98.
//
// Solidity: function updateVMInfoEvent(uint256 vmId, uint64 cpuNum, uint64 memoryNum, uint64 gpuNum, uint256 disk) returns()
func (_Vm *VmSession) UpdateVMInfoEvent(vmId *big.Int, cpuNum uint64, memoryNum uint64, gpuNum uint64, disk *big.Int) (*types.Transaction, error) {
return _Vm.Contract.UpdateVMInfoEvent(&_Vm.TransactOpts, vmId, cpuNum, memoryNum, gpuNum, disk)
}
// UpdateVMInfoEvent is a paid mutator transaction binding the contract method 0xa33d9a98.
//
// Solidity: function updateVMInfoEvent(uint256 vmId, uint64 cpuNum, uint64 memoryNum, uint64 gpuNum, uint256 disk) returns()
func (_Vm *VmTransactorSession) UpdateVMInfoEvent(vmId *big.Int, cpuNum uint64, memoryNum uint64, gpuNum uint64, disk *big.Int) (*types.Transaction, error) {
return _Vm.Contract.UpdateVMInfoEvent(&_Vm.TransactOpts, vmId, cpuNum, memoryNum, gpuNum, disk)
}
// UpdateVmNetworkInfo is a paid mutator transaction binding the contract method 0xfea9da61.
//
// Solidity: function updateVmNetworkInfo(uint256 vmId, string intranetIp, string externalIp, string exSshPort, string exVncPort, string inSshPort, string inVncPort) returns()
func (_Vm *VmTransactor) UpdateVmNetworkInfo(opts *bind.TransactOpts, vmId *big.Int, intranetIp string, externalIp string, exSshPort string, exVncPort string, inSshPort string, inVncPort string) (*types.Transaction, error) {
return _Vm.contract.Transact(opts, "updateVmNetworkInfo", vmId, intranetIp, externalIp, exSshPort, exVncPort, inSshPort, inVncPort)
}
// UpdateVmNetworkInfo is a paid mutator transaction binding the contract method 0xfea9da61.
//
// Solidity: function updateVmNetworkInfo(uint256 vmId, string intranetIp, string externalIp, string exSshPort, string exVncPort, string inSshPort, string inVncPort) returns()
func (_Vm *VmSession) UpdateVmNetworkInfo(vmId *big.Int, intranetIp string, externalIp string, exSshPort string, exVncPort string, inSshPort string, inVncPort string) (*types.Transaction, error) {
return _Vm.Contract.UpdateVmNetworkInfo(&_Vm.TransactOpts, vmId, intranetIp, externalIp, exSshPort, exVncPort, inSshPort, inVncPort)
}
// UpdateVmNetworkInfo is a paid mutator transaction binding the contract method 0xfea9da61.
//
// Solidity: function updateVmNetworkInfo(uint256 vmId, string intranetIp, string externalIp, string exSshPort, string exVncPort, string inSshPort, string inVncPort) returns()
func (_Vm *VmTransactorSession) UpdateVmNetworkInfo(vmId *big.Int, intranetIp string, externalIp string, exSshPort string, exVncPort string, inSshPort string, inVncPort string) (*types.Transaction, error) {
return _Vm.Contract.UpdateVmNetworkInfo(&_Vm.TransactOpts, vmId, intranetIp, externalIp, exSshPort, exVncPort, inSshPort, inVncPort)
}
// VmOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Vm contract.
type VmOwnershipTransferredIterator struct {
Event *VmOwnershipTransferred // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *VmOwnershipTransferredIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(VmOwnershipTransferred)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(VmOwnershipTransferred)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *VmOwnershipTransferredIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *VmOwnershipTransferredIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// VmOwnershipTransferred represents a OwnershipTransferred event raised by the Vm contract.
type VmOwnershipTransferred struct {
PreviousOwner common.Address
NewOwner common.Address
Raw types.Log // Blockchain specific contextual infos
}
// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_Vm *VmFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*VmOwnershipTransferredIterator, error) {
var previousOwnerRule []interface{}
for _, previousOwnerItem := range previousOwner {
previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
}
var newOwnerRule []interface{}
for _, newOwnerItem := range newOwner {
newOwnerRule = append(newOwnerRule, newOwnerItem)
}
logs, sub, err := _Vm.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
if err != nil {
return nil, err
}
return &VmOwnershipTransferredIterator{contract: _Vm.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
}
// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_Vm *VmFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *VmOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
var previousOwnerRule []interface{}
for _, previousOwnerItem := range previousOwner {
previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
}
var newOwnerRule []interface{}
for _, newOwnerItem := range newOwner {
newOwnerRule = append(newOwnerRule, newOwnerItem)
}
logs, sub, err := _Vm.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(VmOwnershipTransferred)
if err := _Vm.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_Vm *VmFilterer) ParseOwnershipTransferred(log types.Log) (*VmOwnershipTransferred, error) {
event := new(VmOwnershipTransferred)
if err := _Vm.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// VmUpdateNetworkInfoEventIterator is returned from FilterUpdateNetworkInfoEvent and is used to iterate over the raw logs and unpacked data for UpdateNetworkInfoEvent events raised by the Vm contract.
type VmUpdateNetworkInfoEventIterator struct {
Event *VmUpdateNetworkInfoEvent // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *VmUpdateNetworkInfoEventIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(VmUpdateNetworkInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(VmUpdateNetworkInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *VmUpdateNetworkInfoEventIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *VmUpdateNetworkInfoEventIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// VmUpdateNetworkInfoEvent represents a UpdateNetworkInfoEvent event raised by the Vm contract.
type VmUpdateNetworkInfoEvent struct {
VmId *big.Int
IntranetIp string
ExternalIp string
ExSshPort string
ExVncPort string
InSshPort string
InVncPort string
Raw types.Log // Blockchain specific contextual infos
}
// FilterUpdateNetworkInfoEvent is a free log retrieval operation binding the contract event 0x0fd5b7102f3ab58b1bb714a22fe4cbcb938d3841bbcd2076eb3959939e048399.
//
// Solidity: event UpdateNetworkInfoEvent(uint256 vmId, string intranetIp, string externalIp, string exSshPort, string exVncPort, string inSshPort, string inVncPort)
func (_Vm *VmFilterer) FilterUpdateNetworkInfoEvent(opts *bind.FilterOpts) (*VmUpdateNetworkInfoEventIterator, error) {
logs, sub, err := _Vm.contract.FilterLogs(opts, "UpdateNetworkInfoEvent")
if err != nil {
return nil, err
}
return &VmUpdateNetworkInfoEventIterator{contract: _Vm.contract, event: "UpdateNetworkInfoEvent", logs: logs, sub: sub}, nil
}
// WatchUpdateNetworkInfoEvent is a free log subscription operation binding the contract event 0x0fd5b7102f3ab58b1bb714a22fe4cbcb938d3841bbcd2076eb3959939e048399.
//
// Solidity: event UpdateNetworkInfoEvent(uint256 vmId, string intranetIp, string externalIp, string exSshPort, string exVncPort, string inSshPort, string inVncPort)
func (_Vm *VmFilterer) WatchUpdateNetworkInfoEvent(opts *bind.WatchOpts, sink chan<- *VmUpdateNetworkInfoEvent) (event.Subscription, error) {
logs, sub, err := _Vm.contract.WatchLogs(opts, "UpdateNetworkInfoEvent")
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(VmUpdateNetworkInfoEvent)
if err := _Vm.contract.UnpackLog(event, "UpdateNetworkInfoEvent", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseUpdateNetworkInfoEvent is a log parse operation binding the contract event 0x0fd5b7102f3ab58b1bb714a22fe4cbcb938d3841bbcd2076eb3959939e048399.
//
// Solidity: event UpdateNetworkInfoEvent(uint256 vmId, string intranetIp, string externalIp, string exSshPort, string exVncPort, string inSshPort, string inVncPort)
func (_Vm *VmFilterer) ParseUpdateNetworkInfoEvent(log types.Log) (*VmUpdateNetworkInfoEvent, error) {
event := new(VmUpdateNetworkInfoEvent)
if err := _Vm.contract.UnpackLog(event, "UpdateNetworkInfoEvent", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// VmUpdateResourceInfoEventIterator is returned from FilterUpdateResourceInfoEvent and is used to iterate over the raw logs and unpacked data for UpdateResourceInfoEvent events raised by the Vm contract.
type VmUpdateResourceInfoEventIterator struct {
Event *VmUpdateResourceInfoEvent // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *VmUpdateResourceInfoEventIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(VmUpdateResourceInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(VmUpdateResourceInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *VmUpdateResourceInfoEventIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *VmUpdateResourceInfoEventIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// VmUpdateResourceInfoEvent represents a UpdateResourceInfoEvent event raised by the Vm contract.
type VmUpdateResourceInfoEvent struct {
VmId *big.Int
CpuCost string
MemoryCost string
GpuCost string
DiskCost string
Raw types.Log // Blockchain specific contextual infos
}
// FilterUpdateResourceInfoEvent is a free log retrieval operation binding the contract event 0xbd56b2e50e1a20a86f7cfe93c0113b889f5cfc56d1a64b67cfc2f28decc7bfd7.
//
// Solidity: event UpdateResourceInfoEvent(uint256 vmId, string cpuCost, string memoryCost, string gpuCost, string diskCost)
func (_Vm *VmFilterer) FilterUpdateResourceInfoEvent(opts *bind.FilterOpts) (*VmUpdateResourceInfoEventIterator, error) {
logs, sub, err := _Vm.contract.FilterLogs(opts, "UpdateResourceInfoEvent")
if err != nil {
return nil, err
}
return &VmUpdateResourceInfoEventIterator{contract: _Vm.contract, event: "UpdateResourceInfoEvent", logs: logs, sub: sub}, nil
}
// WatchUpdateResourceInfoEvent is a free log subscription operation binding the contract event 0xbd56b2e50e1a20a86f7cfe93c0113b889f5cfc56d1a64b67cfc2f28decc7bfd7.
//
// Solidity: event UpdateResourceInfoEvent(uint256 vmId, string cpuCost, string memoryCost, string gpuCost, string diskCost)
func (_Vm *VmFilterer) WatchUpdateResourceInfoEvent(opts *bind.WatchOpts, sink chan<- *VmUpdateResourceInfoEvent) (event.Subscription, error) {
logs, sub, err := _Vm.contract.WatchLogs(opts, "UpdateResourceInfoEvent")
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(VmUpdateResourceInfoEvent)
if err := _Vm.contract.UnpackLog(event, "UpdateResourceInfoEvent", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseUpdateResourceInfoEvent is a log parse operation binding the contract event 0xbd56b2e50e1a20a86f7cfe93c0113b889f5cfc56d1a64b67cfc2f28decc7bfd7.
//
// Solidity: event UpdateResourceInfoEvent(uint256 vmId, string cpuCost, string memoryCost, string gpuCost, string diskCost)
func (_Vm *VmFilterer) ParseUpdateResourceInfoEvent(log types.Log) (*VmUpdateResourceInfoEvent, error) {
event := new(VmUpdateResourceInfoEvent)
if err := _Vm.contract.UnpackLog(event, "UpdateResourceInfoEvent", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// VmUpdateVMInfoEventIterator is returned from FilterUpdateVMInfoEvent and is used to iterate over the raw logs and unpacked data for UpdateVMInfoEvent events raised by the Vm contract.
type VmUpdateVMInfoEventIterator struct {
Event *VmUpdateVMInfoEvent // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *VmUpdateVMInfoEventIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(VmUpdateVMInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(VmUpdateVMInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *VmUpdateVMInfoEventIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *VmUpdateVMInfoEventIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// VmUpdateVMInfoEvent represents a UpdateVMInfoEvent event raised by the Vm contract.
type VmUpdateVMInfoEvent struct {
VmId *big.Int
CpuNum uint64
MemoryNum uint64
GpuNum uint64
Disk *big.Int
Raw types.Log // Blockchain specific contextual infos
}
// FilterUpdateVMInfoEvent is a free log retrieval operation binding the contract event 0xe7eca197713d046c5838b32bdc1fac83a9de5a9ca65a070482955f7953f6aab1.
//
// Solidity: event UpdateVMInfoEvent(uint256 vmId, uint64 cpuNum, uint64 memoryNum, uint64 gpuNum, uint256 disk)
func (_Vm *VmFilterer) FilterUpdateVMInfoEvent(opts *bind.FilterOpts) (*VmUpdateVMInfoEventIterator, error) {
logs, sub, err := _Vm.contract.FilterLogs(opts, "UpdateVMInfoEvent")
if err != nil {
return nil, err
}
return &VmUpdateVMInfoEventIterator{contract: _Vm.contract, event: "UpdateVMInfoEvent", logs: logs, sub: sub}, nil
}
// WatchUpdateVMInfoEvent is a free log subscription operation binding the contract event 0xe7eca197713d046c5838b32bdc1fac83a9de5a9ca65a070482955f7953f6aab1.
//
// Solidity: event UpdateVMInfoEvent(uint256 vmId, uint64 cpuNum, uint64 memoryNum, uint64 gpuNum, uint256 disk)
func (_Vm *VmFilterer) WatchUpdateVMInfoEvent(opts *bind.WatchOpts, sink chan<- *VmUpdateVMInfoEvent) (event.Subscription, error) {
logs, sub, err := _Vm.contract.WatchLogs(opts, "UpdateVMInfoEvent")
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(VmUpdateVMInfoEvent)
if err := _Vm.contract.UnpackLog(event, "UpdateVMInfoEvent", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseUpdateVMInfoEvent is a log parse operation binding the contract event 0xe7eca197713d046c5838b32bdc1fac83a9de5a9ca65a070482955f7953f6aab1.
//
// Solidity: event UpdateVMInfoEvent(uint256 vmId, uint64 cpuNum, uint64 memoryNum, uint64 gpuNum, uint256 disk)
func (_Vm *VmFilterer) ParseUpdateVMInfoEvent(log types.Log) (*VmUpdateVMInfoEvent, error) {
event := new(VmUpdateVMInfoEvent)
if err := _Vm.contract.UnpackLog(event, "UpdateVMInfoEvent", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
[
{
"inputs": [
{
"internalType": "address",
"name": "const",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "taskId",
"type": "string"
},
{
"indexed": false,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "callerIp",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "cpuModel",
"type": "string"
},
{
"indexed": false,
"internalType": "uint64",
"name": "cpuNum",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "cpuCores",
"type": "uint64"
},
{
"indexed": false,
"internalType": "string",
"name": "gpuModel",
"type": "string"
},
{
"indexed": false,
"internalType": "uint64",
"name": "gpuNum",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "memNum",
"type": "uint64"
},
{
"indexed": false,
"internalType": "string",
"name": "os",
"type": "string"
}
],
"name": "AddCreateVMInfoEvent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "taskId",
"type": "string"
},
{
"indexed": false,
"internalType": "address",
"name": "creater",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "snatcher",
"type": "address"
}
],
"name": "SnatchTaskEvent",
"type": "event"
},
{
"inputs": [],
"name": "_const",
"outputs": [
{
"internalType": "contract ICloudConstant",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "addAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "taskId",
"type": "string"
},
{
"internalType": "string",
"name": "callerIp",
"type": "string"
},
{
"internalType": "string",
"name": "cpuModel",
"type": "string"
},
{
"internalType": "uint64",
"name": "cpuNum",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "cpuCores",
"type": "uint64"
},
{
"internalType": "string",
"name": "gpuModel",
"type": "string"
},
{
"internalType": "uint64",
"name": "gpuNum",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "memNum",
"type": "uint64"
},
{
"internalType": "string",
"name": "os",
"type": "string"
}
],
"name": "addVirtualMachine",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "delAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getTaskId",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "taskId",
"type": "string"
}
],
"name": "getVmCreateProgress",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
}
],
"name": "isAdmin",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "const",
"type": "address"
}
],
"name": "setConstant",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "taskId",
"type": "string"
},
{
"internalType": "address",
"name": "creater",
"type": "address"
}
],
"name": "snatchTask",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
},
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"name": "taskProgress",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "taskId",
"type": "string"
},
{
"internalType": "uint256",
"name": "createStage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "createProgress",
"type": "uint256"
}
],
"name": "updateVmCreateProgress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
\ No newline at end of file
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package vmCreate
import (
"errors"
"math/big"
"strings"
ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/event"
)
// Reference imports to suppress errors if they are not otherwise used.
var (
_ = errors.New
_ = big.NewInt
_ = strings.NewReader
_ = ethereum.NotFound
_ = bind.Bind
_ = common.Big1
_ = types.BloomLookup
_ = event.NewSubscription
)
// VmCreateMetaData contains all meta data concerning the VmCreate contract.
var VmCreateMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"const\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"callerIp\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"cpuModel\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"cpuNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"cpuCores\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gpuModel\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"gpuNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"memNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"os\",\"type\":\"string\"}],\"name\":\"AddCreateVMInfoEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creater\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"snatcher\",\"type\":\"address\"}],\"name\":\"SnatchTaskEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_const\",\"outputs\":[{\"internalType\":\"contractICloudConstant\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"callerIp\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cpuModel\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"cpuNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cpuCores\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"gpuModel\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"gpuNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"memNum\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"os\",\"type\":\"string\"}],\"name\":\"addVirtualMachine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"delAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaskId\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"}],\"name\":\"getVmCreateProgress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"const\",\"type\":\"address\"}],\"name\":\"setConstant\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"creater\",\"type\":\"address\"}],\"name\":\"snatchTask\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"taskProgress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"createStage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createProgress\",\"type\":\"uint256\"}],\"name\":\"updateVmCreateProgress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
}
// VmCreateABI is the input ABI used to generate the binding from.
// Deprecated: Use VmCreateMetaData.ABI instead.
var VmCreateABI = VmCreateMetaData.ABI
// VmCreate is an auto generated Go binding around an Ethereum contract.
type VmCreate struct {
VmCreateCaller // Read-only binding to the contract
VmCreateTransactor // Write-only binding to the contract
VmCreateFilterer // Log filterer for contract events
}
// VmCreateCaller is an auto generated read-only Go binding around an Ethereum contract.
type VmCreateCaller struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// VmCreateTransactor is an auto generated write-only Go binding around an Ethereum contract.
type VmCreateTransactor struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// VmCreateFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
type VmCreateFilterer struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// VmCreateSession is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type VmCreateSession struct {
Contract *VmCreate // Generic contract binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// VmCreateCallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type VmCreateCallerSession struct {
Contract *VmCreateCaller // Generic contract caller binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
}
// VmCreateTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type VmCreateTransactorSession struct {
Contract *VmCreateTransactor // Generic contract transactor binding to set the session for
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// VmCreateRaw is an auto generated low-level Go binding around an Ethereum contract.
type VmCreateRaw struct {
Contract *VmCreate // Generic contract binding to access the raw methods on
}
// VmCreateCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type VmCreateCallerRaw struct {
Contract *VmCreateCaller // Generic read-only contract binding to access the raw methods on
}
// VmCreateTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type VmCreateTransactorRaw struct {
Contract *VmCreateTransactor // Generic write-only contract binding to access the raw methods on
}
// NewVmCreate creates a new instance of VmCreate, bound to a specific deployed contract.
func NewVmCreate(address common.Address, backend bind.ContractBackend) (*VmCreate, error) {
contract, err := bindVmCreate(address, backend, backend, backend)
if err != nil {
return nil, err
}
return &VmCreate{VmCreateCaller: VmCreateCaller{contract: contract}, VmCreateTransactor: VmCreateTransactor{contract: contract}, VmCreateFilterer: VmCreateFilterer{contract: contract}}, nil
}
// NewVmCreateCaller creates a new read-only instance of VmCreate, bound to a specific deployed contract.
func NewVmCreateCaller(address common.Address, caller bind.ContractCaller) (*VmCreateCaller, error) {
contract, err := bindVmCreate(address, caller, nil, nil)
if err != nil {
return nil, err
}
return &VmCreateCaller{contract: contract}, nil
}
// NewVmCreateTransactor creates a new write-only instance of VmCreate, bound to a specific deployed contract.
func NewVmCreateTransactor(address common.Address, transactor bind.ContractTransactor) (*VmCreateTransactor, error) {
contract, err := bindVmCreate(address, nil, transactor, nil)
if err != nil {
return nil, err
}
return &VmCreateTransactor{contract: contract}, nil
}
// NewVmCreateFilterer creates a new log filterer instance of VmCreate, bound to a specific deployed contract.
func NewVmCreateFilterer(address common.Address, filterer bind.ContractFilterer) (*VmCreateFilterer, error) {
contract, err := bindVmCreate(address, nil, nil, filterer)
if err != nil {
return nil, err
}
return &VmCreateFilterer{contract: contract}, nil
}
// bindVmCreate binds a generic wrapper to an already deployed contract.
func bindVmCreate(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
parsed, err := abi.JSON(strings.NewReader(VmCreateABI))
if err != nil {
return nil, err
}
return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_VmCreate *VmCreateRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _VmCreate.Contract.VmCreateCaller.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_VmCreate *VmCreateRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _VmCreate.Contract.VmCreateTransactor.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_VmCreate *VmCreateRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _VmCreate.Contract.VmCreateTransactor.contract.Transact(opts, method, params...)
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_VmCreate *VmCreateCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _VmCreate.Contract.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_VmCreate *VmCreateTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _VmCreate.Contract.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_VmCreate *VmCreateTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _VmCreate.Contract.contract.Transact(opts, method, params...)
}
// Const is a free data retrieval call binding the contract method 0xe76dba42.
//
// Solidity: function _const() view returns(address)
func (_VmCreate *VmCreateCaller) Const(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
err := _VmCreate.contract.Call(opts, &out, "_const")
if err != nil {
return *new(common.Address), err
}
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
// Const is a free data retrieval call binding the contract method 0xe76dba42.
//
// Solidity: function _const() view returns(address)
func (_VmCreate *VmCreateSession) Const() (common.Address, error) {
return _VmCreate.Contract.Const(&_VmCreate.CallOpts)
}
// Const is a free data retrieval call binding the contract method 0xe76dba42.
//
// Solidity: function _const() view returns(address)
func (_VmCreate *VmCreateCallerSession) Const() (common.Address, error) {
return _VmCreate.Contract.Const(&_VmCreate.CallOpts)
}
// GetTaskId is a free data retrieval call binding the contract method 0x13859688.
//
// Solidity: function getTaskId() view returns(string)
func (_VmCreate *VmCreateCaller) GetTaskId(opts *bind.CallOpts) (string, error) {
var out []interface{}
err := _VmCreate.contract.Call(opts, &out, "getTaskId")
if err != nil {
return *new(string), err
}
out0 := *abi.ConvertType(out[0], new(string)).(*string)
return out0, err
}
// GetTaskId is a free data retrieval call binding the contract method 0x13859688.
//
// Solidity: function getTaskId() view returns(string)
func (_VmCreate *VmCreateSession) GetTaskId() (string, error) {
return _VmCreate.Contract.GetTaskId(&_VmCreate.CallOpts)
}
// GetTaskId is a free data retrieval call binding the contract method 0x13859688.
//
// Solidity: function getTaskId() view returns(string)
func (_VmCreate *VmCreateCallerSession) GetTaskId() (string, error) {
return _VmCreate.Contract.GetTaskId(&_VmCreate.CallOpts)
}
// GetVmCreateProgress is a free data retrieval call binding the contract method 0xb1870375.
//
// Solidity: function getVmCreateProgress(string taskId) view returns(uint256, uint256)
func (_VmCreate *VmCreateCaller) GetVmCreateProgress(opts *bind.CallOpts, taskId string) (*big.Int, *big.Int, error) {
var out []interface{}
err := _VmCreate.contract.Call(opts, &out, "getVmCreateProgress", taskId)
if err != nil {
return *new(*big.Int), *new(*big.Int), err
}
out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
return out0, out1, err
}
// GetVmCreateProgress is a free data retrieval call binding the contract method 0xb1870375.
//
// Solidity: function getVmCreateProgress(string taskId) view returns(uint256, uint256)
func (_VmCreate *VmCreateSession) GetVmCreateProgress(taskId string) (*big.Int, *big.Int, error) {
return _VmCreate.Contract.GetVmCreateProgress(&_VmCreate.CallOpts, taskId)
}
// GetVmCreateProgress is a free data retrieval call binding the contract method 0xb1870375.
//
// Solidity: function getVmCreateProgress(string taskId) view returns(uint256, uint256)
func (_VmCreate *VmCreateCallerSession) GetVmCreateProgress(taskId string) (*big.Int, *big.Int, error) {
return _VmCreate.Contract.GetVmCreateProgress(&_VmCreate.CallOpts, taskId)
}
// IsAdmin is a free data retrieval call binding the contract method 0x24d7806c.
//
// Solidity: function isAdmin(address _addr) view returns(bool)
func (_VmCreate *VmCreateCaller) IsAdmin(opts *bind.CallOpts, _addr common.Address) (bool, error) {
var out []interface{}
err := _VmCreate.contract.Call(opts, &out, "isAdmin", _addr)
if err != nil {
return *new(bool), err
}
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
return out0, err
}
// IsAdmin is a free data retrieval call binding the contract method 0x24d7806c.
//
// Solidity: function isAdmin(address _addr) view returns(bool)
func (_VmCreate *VmCreateSession) IsAdmin(_addr common.Address) (bool, error) {
return _VmCreate.Contract.IsAdmin(&_VmCreate.CallOpts, _addr)
}
// IsAdmin is a free data retrieval call binding the contract method 0x24d7806c.
//
// Solidity: function isAdmin(address _addr) view returns(bool)
func (_VmCreate *VmCreateCallerSession) IsAdmin(_addr common.Address) (bool, error) {
return _VmCreate.Contract.IsAdmin(&_VmCreate.CallOpts, _addr)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_VmCreate *VmCreateCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
err := _VmCreate.contract.Call(opts, &out, "owner")
if err != nil {
return *new(common.Address), err
}
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_VmCreate *VmCreateSession) Owner() (common.Address, error) {
return _VmCreate.Contract.Owner(&_VmCreate.CallOpts)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_VmCreate *VmCreateCallerSession) Owner() (common.Address, error) {
return _VmCreate.Contract.Owner(&_VmCreate.CallOpts)
}
// TaskProgress is a free data retrieval call binding the contract method 0x34d578ef.
//
// Solidity: function taskProgress(string , uint8 ) view returns(uint256)
func (_VmCreate *VmCreateCaller) TaskProgress(opts *bind.CallOpts, arg0 string, arg1 uint8) (*big.Int, error) {
var out []interface{}
err := _VmCreate.contract.Call(opts, &out, "taskProgress", arg0, arg1)
if err != nil {
return *new(*big.Int), err
}
out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
// TaskProgress is a free data retrieval call binding the contract method 0x34d578ef.
//
// Solidity: function taskProgress(string , uint8 ) view returns(uint256)
func (_VmCreate *VmCreateSession) TaskProgress(arg0 string, arg1 uint8) (*big.Int, error) {
return _VmCreate.Contract.TaskProgress(&_VmCreate.CallOpts, arg0, arg1)
}
// TaskProgress is a free data retrieval call binding the contract method 0x34d578ef.
//
// Solidity: function taskProgress(string , uint8 ) view returns(uint256)
func (_VmCreate *VmCreateCallerSession) TaskProgress(arg0 string, arg1 uint8) (*big.Int, error) {
return _VmCreate.Contract.TaskProgress(&_VmCreate.CallOpts, arg0, arg1)
}
// AddAdmin is a paid mutator transaction binding the contract method 0x70480275.
//
// Solidity: function addAdmin(address _admin) returns()
func (_VmCreate *VmCreateTransactor) AddAdmin(opts *bind.TransactOpts, _admin common.Address) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "addAdmin", _admin)
}
// AddAdmin is a paid mutator transaction binding the contract method 0x70480275.
//
// Solidity: function addAdmin(address _admin) returns()
func (_VmCreate *VmCreateSession) AddAdmin(_admin common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.AddAdmin(&_VmCreate.TransactOpts, _admin)
}
// AddAdmin is a paid mutator transaction binding the contract method 0x70480275.
//
// Solidity: function addAdmin(address _admin) returns()
func (_VmCreate *VmCreateTransactorSession) AddAdmin(_admin common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.AddAdmin(&_VmCreate.TransactOpts, _admin)
}
// AddVirtualMachine is a paid mutator transaction binding the contract method 0xb3570a36.
//
// Solidity: function addVirtualMachine(string taskId, string callerIp, string cpuModel, uint64 cpuNum, uint64 cpuCores, string gpuModel, uint64 gpuNum, uint64 memNum, string os) returns()
func (_VmCreate *VmCreateTransactor) AddVirtualMachine(opts *bind.TransactOpts, taskId string, callerIp string, cpuModel string, cpuNum uint64, cpuCores uint64, gpuModel string, gpuNum uint64, memNum uint64, os string) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "addVirtualMachine", taskId, callerIp, cpuModel, cpuNum, cpuCores, gpuModel, gpuNum, memNum, os)
}
// AddVirtualMachine is a paid mutator transaction binding the contract method 0xb3570a36.
//
// Solidity: function addVirtualMachine(string taskId, string callerIp, string cpuModel, uint64 cpuNum, uint64 cpuCores, string gpuModel, uint64 gpuNum, uint64 memNum, string os) returns()
func (_VmCreate *VmCreateSession) AddVirtualMachine(taskId string, callerIp string, cpuModel string, cpuNum uint64, cpuCores uint64, gpuModel string, gpuNum uint64, memNum uint64, os string) (*types.Transaction, error) {
return _VmCreate.Contract.AddVirtualMachine(&_VmCreate.TransactOpts, taskId, callerIp, cpuModel, cpuNum, cpuCores, gpuModel, gpuNum, memNum, os)
}
// AddVirtualMachine is a paid mutator transaction binding the contract method 0xb3570a36.
//
// Solidity: function addVirtualMachine(string taskId, string callerIp, string cpuModel, uint64 cpuNum, uint64 cpuCores, string gpuModel, uint64 gpuNum, uint64 memNum, string os) returns()
func (_VmCreate *VmCreateTransactorSession) AddVirtualMachine(taskId string, callerIp string, cpuModel string, cpuNum uint64, cpuCores uint64, gpuModel string, gpuNum uint64, memNum uint64, os string) (*types.Transaction, error) {
return _VmCreate.Contract.AddVirtualMachine(&_VmCreate.TransactOpts, taskId, callerIp, cpuModel, cpuNum, cpuCores, gpuModel, gpuNum, memNum, os)
}
// DelAdmin is a paid mutator transaction binding the contract method 0x62d91855.
//
// Solidity: function delAdmin(address _admin) returns()
func (_VmCreate *VmCreateTransactor) DelAdmin(opts *bind.TransactOpts, _admin common.Address) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "delAdmin", _admin)
}
// DelAdmin is a paid mutator transaction binding the contract method 0x62d91855.
//
// Solidity: function delAdmin(address _admin) returns()
func (_VmCreate *VmCreateSession) DelAdmin(_admin common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.DelAdmin(&_VmCreate.TransactOpts, _admin)
}
// DelAdmin is a paid mutator transaction binding the contract method 0x62d91855.
//
// Solidity: function delAdmin(address _admin) returns()
func (_VmCreate *VmCreateTransactorSession) DelAdmin(_admin common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.DelAdmin(&_VmCreate.TransactOpts, _admin)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_VmCreate *VmCreateTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "renounceOwnership")
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_VmCreate *VmCreateSession) RenounceOwnership() (*types.Transaction, error) {
return _VmCreate.Contract.RenounceOwnership(&_VmCreate.TransactOpts)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_VmCreate *VmCreateTransactorSession) RenounceOwnership() (*types.Transaction, error) {
return _VmCreate.Contract.RenounceOwnership(&_VmCreate.TransactOpts)
}
// SetConstant is a paid mutator transaction binding the contract method 0xc88e7e42.
//
// Solidity: function setConstant(address const) returns()
func (_VmCreate *VmCreateTransactor) SetConstant(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "setConstant", arg0)
}
// SetConstant is a paid mutator transaction binding the contract method 0xc88e7e42.
//
// Solidity: function setConstant(address const) returns()
func (_VmCreate *VmCreateSession) SetConstant(arg0 common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.SetConstant(&_VmCreate.TransactOpts, arg0)
}
// SetConstant is a paid mutator transaction binding the contract method 0xc88e7e42.
//
// Solidity: function setConstant(address const) returns()
func (_VmCreate *VmCreateTransactorSession) SetConstant(arg0 common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.SetConstant(&_VmCreate.TransactOpts, arg0)
}
// SnatchTask is a paid mutator transaction binding the contract method 0x5d04c897.
//
// Solidity: function snatchTask(string taskId, address creater) returns()
func (_VmCreate *VmCreateTransactor) SnatchTask(opts *bind.TransactOpts, taskId string, creater common.Address) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "snatchTask", taskId, creater)
}
// SnatchTask is a paid mutator transaction binding the contract method 0x5d04c897.
//
// Solidity: function snatchTask(string taskId, address creater) returns()
func (_VmCreate *VmCreateSession) SnatchTask(taskId string, creater common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.SnatchTask(&_VmCreate.TransactOpts, taskId, creater)
}
// SnatchTask is a paid mutator transaction binding the contract method 0x5d04c897.
//
// Solidity: function snatchTask(string taskId, address creater) returns()
func (_VmCreate *VmCreateTransactorSession) SnatchTask(taskId string, creater common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.SnatchTask(&_VmCreate.TransactOpts, taskId, creater)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_VmCreate *VmCreateTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "transferOwnership", newOwner)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_VmCreate *VmCreateSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.TransferOwnership(&_VmCreate.TransactOpts, newOwner)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_VmCreate *VmCreateTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
return _VmCreate.Contract.TransferOwnership(&_VmCreate.TransactOpts, newOwner)
}
// UpdateVmCreateProgress is a paid mutator transaction binding the contract method 0x6c1b2427.
//
// Solidity: function updateVmCreateProgress(string taskId, uint256 createStage, uint256 createProgress) returns()
func (_VmCreate *VmCreateTransactor) UpdateVmCreateProgress(opts *bind.TransactOpts, taskId string, createStage *big.Int, createProgress *big.Int) (*types.Transaction, error) {
return _VmCreate.contract.Transact(opts, "updateVmCreateProgress", taskId, createStage, createProgress)
}
// UpdateVmCreateProgress is a paid mutator transaction binding the contract method 0x6c1b2427.
//
// Solidity: function updateVmCreateProgress(string taskId, uint256 createStage, uint256 createProgress) returns()
func (_VmCreate *VmCreateSession) UpdateVmCreateProgress(taskId string, createStage *big.Int, createProgress *big.Int) (*types.Transaction, error) {
return _VmCreate.Contract.UpdateVmCreateProgress(&_VmCreate.TransactOpts, taskId, createStage, createProgress)
}
// UpdateVmCreateProgress is a paid mutator transaction binding the contract method 0x6c1b2427.
//
// Solidity: function updateVmCreateProgress(string taskId, uint256 createStage, uint256 createProgress) returns()
func (_VmCreate *VmCreateTransactorSession) UpdateVmCreateProgress(taskId string, createStage *big.Int, createProgress *big.Int) (*types.Transaction, error) {
return _VmCreate.Contract.UpdateVmCreateProgress(&_VmCreate.TransactOpts, taskId, createStage, createProgress)
}
// VmCreateAddCreateVMInfoEventIterator is returned from FilterAddCreateVMInfoEvent and is used to iterate over the raw logs and unpacked data for AddCreateVMInfoEvent events raised by the VmCreate contract.
type VmCreateAddCreateVMInfoEventIterator struct {
Event *VmCreateAddCreateVMInfoEvent // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *VmCreateAddCreateVMInfoEventIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(VmCreateAddCreateVMInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(VmCreateAddCreateVMInfoEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *VmCreateAddCreateVMInfoEventIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *VmCreateAddCreateVMInfoEventIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// VmCreateAddCreateVMInfoEvent represents a AddCreateVMInfoEvent event raised by the VmCreate contract.
type VmCreateAddCreateVMInfoEvent struct {
TaskId string
Owner common.Address
CallerIp string
CpuModel string
CpuNum uint64
CpuCores uint64
GpuModel string
GpuNum uint64
MemNum uint64
Os string
Raw types.Log // Blockchain specific contextual infos
}
// FilterAddCreateVMInfoEvent is a free log retrieval operation binding the contract event 0x7d25d4d054c4e119d70f7f809edd27dfdff08e176a4a4a3f25e7e7ad63d3398e.
//
// Solidity: event AddCreateVMInfoEvent(string taskId, address owner, string callerIp, string cpuModel, uint64 cpuNum, uint64 cpuCores, string gpuModel, uint64 gpuNum, uint64 memNum, string os)
func (_VmCreate *VmCreateFilterer) FilterAddCreateVMInfoEvent(opts *bind.FilterOpts) (*VmCreateAddCreateVMInfoEventIterator, error) {
logs, sub, err := _VmCreate.contract.FilterLogs(opts, "AddCreateVMInfoEvent")
if err != nil {
return nil, err
}
return &VmCreateAddCreateVMInfoEventIterator{contract: _VmCreate.contract, event: "AddCreateVMInfoEvent", logs: logs, sub: sub}, nil
}
// WatchAddCreateVMInfoEvent is a free log subscription operation binding the contract event 0x7d25d4d054c4e119d70f7f809edd27dfdff08e176a4a4a3f25e7e7ad63d3398e.
//
// Solidity: event AddCreateVMInfoEvent(string taskId, address owner, string callerIp, string cpuModel, uint64 cpuNum, uint64 cpuCores, string gpuModel, uint64 gpuNum, uint64 memNum, string os)
func (_VmCreate *VmCreateFilterer) WatchAddCreateVMInfoEvent(opts *bind.WatchOpts, sink chan<- *VmCreateAddCreateVMInfoEvent) (event.Subscription, error) {
logs, sub, err := _VmCreate.contract.WatchLogs(opts, "AddCreateVMInfoEvent")
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(VmCreateAddCreateVMInfoEvent)
if err := _VmCreate.contract.UnpackLog(event, "AddCreateVMInfoEvent", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseAddCreateVMInfoEvent is a log parse operation binding the contract event 0x7d25d4d054c4e119d70f7f809edd27dfdff08e176a4a4a3f25e7e7ad63d3398e.
//
// Solidity: event AddCreateVMInfoEvent(string taskId, address owner, string callerIp, string cpuModel, uint64 cpuNum, uint64 cpuCores, string gpuModel, uint64 gpuNum, uint64 memNum, string os)
func (_VmCreate *VmCreateFilterer) ParseAddCreateVMInfoEvent(log types.Log) (*VmCreateAddCreateVMInfoEvent, error) {
event := new(VmCreateAddCreateVMInfoEvent)
if err := _VmCreate.contract.UnpackLog(event, "AddCreateVMInfoEvent", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// VmCreateOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the VmCreate contract.
type VmCreateOwnershipTransferredIterator struct {
Event *VmCreateOwnershipTransferred // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *VmCreateOwnershipTransferredIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(VmCreateOwnershipTransferred)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(VmCreateOwnershipTransferred)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *VmCreateOwnershipTransferredIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *VmCreateOwnershipTransferredIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// VmCreateOwnershipTransferred represents a OwnershipTransferred event raised by the VmCreate contract.
type VmCreateOwnershipTransferred struct {
PreviousOwner common.Address
NewOwner common.Address
Raw types.Log // Blockchain specific contextual infos
}
// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_VmCreate *VmCreateFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*VmCreateOwnershipTransferredIterator, error) {
var previousOwnerRule []interface{}
for _, previousOwnerItem := range previousOwner {
previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
}
var newOwnerRule []interface{}
for _, newOwnerItem := range newOwner {
newOwnerRule = append(newOwnerRule, newOwnerItem)
}
logs, sub, err := _VmCreate.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
if err != nil {
return nil, err
}
return &VmCreateOwnershipTransferredIterator{contract: _VmCreate.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
}
// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_VmCreate *VmCreateFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *VmCreateOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
var previousOwnerRule []interface{}
for _, previousOwnerItem := range previousOwner {
previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
}
var newOwnerRule []interface{}
for _, newOwnerItem := range newOwner {
newOwnerRule = append(newOwnerRule, newOwnerItem)
}
logs, sub, err := _VmCreate.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(VmCreateOwnershipTransferred)
if err := _VmCreate.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_VmCreate *VmCreateFilterer) ParseOwnershipTransferred(log types.Log) (*VmCreateOwnershipTransferred, error) {
event := new(VmCreateOwnershipTransferred)
if err := _VmCreate.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// VmCreateSnatchTaskEventIterator is returned from FilterSnatchTaskEvent and is used to iterate over the raw logs and unpacked data for SnatchTaskEvent events raised by the VmCreate contract.
type VmCreateSnatchTaskEventIterator struct {
Event *VmCreateSnatchTaskEvent // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *VmCreateSnatchTaskEventIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(VmCreateSnatchTaskEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(VmCreateSnatchTaskEvent)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *VmCreateSnatchTaskEventIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *VmCreateSnatchTaskEventIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// VmCreateSnatchTaskEvent represents a SnatchTaskEvent event raised by the VmCreate contract.
type VmCreateSnatchTaskEvent struct {
TaskId string
Creater common.Address
Snatcher common.Address
Raw types.Log // Blockchain specific contextual infos
}
// FilterSnatchTaskEvent is a free log retrieval operation binding the contract event 0x269704899edcfe419dffb9b9581ba9dc9388ff0cffe1cd177f9fd18ab81590b0.
//
// Solidity: event SnatchTaskEvent(string taskId, address creater, address snatcher)
func (_VmCreate *VmCreateFilterer) FilterSnatchTaskEvent(opts *bind.FilterOpts) (*VmCreateSnatchTaskEventIterator, error) {
logs, sub, err := _VmCreate.contract.FilterLogs(opts, "SnatchTaskEvent")
if err != nil {
return nil, err
}
return &VmCreateSnatchTaskEventIterator{contract: _VmCreate.contract, event: "SnatchTaskEvent", logs: logs, sub: sub}, nil
}
// WatchSnatchTaskEvent is a free log subscription operation binding the contract event 0x269704899edcfe419dffb9b9581ba9dc9388ff0cffe1cd177f9fd18ab81590b0.
//
// Solidity: event SnatchTaskEvent(string taskId, address creater, address snatcher)
func (_VmCreate *VmCreateFilterer) WatchSnatchTaskEvent(opts *bind.WatchOpts, sink chan<- *VmCreateSnatchTaskEvent) (event.Subscription, error) {
logs, sub, err := _VmCreate.contract.WatchLogs(opts, "SnatchTaskEvent")
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(VmCreateSnatchTaskEvent)
if err := _VmCreate.contract.UnpackLog(event, "SnatchTaskEvent", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseSnatchTaskEvent is a log parse operation binding the contract event 0x269704899edcfe419dffb9b9581ba9dc9388ff0cffe1cd177f9fd18ab81590b0.
//
// Solidity: event SnatchTaskEvent(string taskId, address creater, address snatcher)
func (_VmCreate *VmCreateFilterer) ParseSnatchTaskEvent(log types.Log) (*VmCreateSnatchTaskEvent, error) {
event := new(VmCreateSnatchTaskEvent)
if err := _VmCreate.contract.UnpackLog(event, "SnatchTaskEvent", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
module hashrateNode
go 1.19
require github.com/astaxie/beego v1.12.3
require (
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
github.com/sirupsen/logrus v1.9.3
github.com/smartystreets/goconvey v1.6.4
)
require (
github.com/Knetic/govaluate v3.0.0+incompatible // indirect
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect
github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd // indirect
github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
github.com/casbin/casbin v1.7.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect
github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d // indirect
github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808 // indirect
github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a // indirect
github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76 // indirect
github.com/deckarep/golang-set/v2 v2.1.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
github.com/deepmap/oapi-codegen v1.8.2 // indirect
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 // indirect
github.com/elastic/go-elasticsearch/v6 v6.8.5 // indirect
github.com/ethereum/go-ethereum v1.12.2 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/garyburd/redigo v1.6.4 // indirect
github.com/go-ole/go-ole v1.2.1 // indirect
github.com/go-redis/redis v6.14.2+incompatible // indirect
github.com/go-sql-driver/mysql v1.5.0 // indirect
github.com/go-stack/stack v1.8.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/gomodule/redigo v2.0.0+incompatible // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/holiman/uint256 v1.2.3 // indirect
github.com/influxdata/influxdb-client-go/v2 v2.4.0 // indirect
github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c // indirect
github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 // indirect
github.com/jtolds/gls v4.20.0+incompatible // indirect
github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6 // indirect
github.com/lestrrat-go/strftime v1.0.6 // indirect
github.com/lib/pq v1.0.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/oschwald/geoip2-golang v1.9.0 // indirect
github.com/oschwald/maxminddb-golang v1.11.0 // indirect
github.com/pelletier/go-toml v1.2.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.14.0 // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.39.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
github.com/shiena/ansicolor v0.0.0-20230509054315-a9deabde6e02 // indirect
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0 // indirect
github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d // indirect
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec // indirect
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
github.com/tklauser/go-sysconf v0.3.5 // indirect
github.com/tklauser/numcpus v0.2.2 // indirect
github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b // indirect
golang.org/x/crypto v0.12.0 // indirect
golang.org/x/exp v0.0.0-20230810033253-352e893a4cad // indirect
golang.org/x/net v0.10.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/text v0.12.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
package log
import (
"context"
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
"github.com/sirupsen/logrus"
"os"
"path"
"time"
)
var (
mlog = logrus.New()
)
type LogConfig struct {
Save uint `json:"save"`
Path string `json:"path"`
Level string `json:"level"`
}
func InitLog(logConfig LogConfig) {
mlog.Out = os.Stdout
var loglevel logrus.Level
err := loglevel.UnmarshalText([]byte(logConfig.Level))
if err != nil {
mlog.Panicf("set log level failed: %v", err)
}
mlog.SetLevel(loglevel)
mlog.Formatter = &logrus.TextFormatter{FullTimestamp: true, TimestampFormat: "2006-01-2 15:04:05.000"}
localFilesystemLogger(mlog, logConfig.Path, logConfig.Save)
}
func logWriter(logPath string, level string, save uint) *rotatelogs.RotateLogs {
logFullPath := path.Join(logPath, level)
logWriter, err := rotatelogs.New(
logFullPath+".%Y%m%d",
rotatelogs.WithLinkName(logFullPath),
rotatelogs.WithRotationCount(save),
rotatelogs.WithRotationTime(24*time.Hour),
)
if err != nil {
panic(err)
}
return logWriter
}
func localFilesystemLogger(log *logrus.Logger, logPath string, save uint) {
lfHook := lfshook.NewHook(lfshook.WriterMap{
logrus.DebugLevel: logWriter(logPath, "debug", save), // 为不同级别设置不同的输出目的
logrus.InfoLevel: logWriter(logPath, "info", save),
logrus.WarnLevel: logWriter(logPath, "warn", save),
logrus.ErrorLevel: logWriter(logPath, "error", save),
logrus.FatalLevel: logWriter(logPath, "fatal", save),
logrus.PanicLevel: logWriter(logPath, "panic", save),
}, &logrus.TextFormatter{FullTimestamp: true, TimestampFormat: "2006-01-2 15:04:05.000"})
log.AddHook(lfHook)
}
// WithField allocates a new entry and adds a field to it.
// Debug, Print, Info, Warn, Error, Fatal or Panic must be then applied to
// this new returned entry.
// If you want multiple fields, use `WithFields`.
func WithField(key string, value interface{}) *logrus.Entry {
return mlog.WithField(key, value)
}
// Adds a struct of fields to the log entry. All it does is call `WithField` for
// each `Field`.
func WithFields(fields logrus.Fields) *logrus.Entry {
return mlog.WithFields(fields)
}
// Add an error as single field to the log entry. All it does is call
// `WithError` for the given `error`.
func WithError(err error) *logrus.Entry {
return mlog.WithError(err)
}
// Add a context to the log entry.
func WithContext(ctx context.Context) *logrus.Entry {
return mlog.WithContext(ctx)
}
// Overrides the time of the log entry.
func WithTime(t time.Time) *logrus.Entry {
return mlog.WithTime(t)
}
func Logf(level logrus.Level, format string, args ...interface{}) {
mlog.Logf(level, format, args...)
}
func Tracef(format string, args ...interface{}) {
mlog.Tracef(format, args...)
}
func Debugf(format string, args ...interface{}) {
mlog.Debugf(format, args...)
}
func Infof(format string, args ...interface{}) {
mlog.Infof(format, args...)
}
func Printf(format string, args ...interface{}) {
mlog.Printf(format, args...)
}
func Warnf(format string, args ...interface{}) {
mlog.Warnf(format, args...)
}
func Warningf(format string, args ...interface{}) {
mlog.Warningf(format, args...)
}
func Errorf(format string, args ...interface{}) {
mlog.Errorf(format, args)
}
func Fatalf(format string, args ...interface{}) {
mlog.Fatalf(format, args...)
}
func Panicf(format string, args ...interface{}) {
mlog.Panicf(format, args...)
}
func Log(level logrus.Level, args ...interface{}) {
mlog.Log(level, args...)
}
func LogFn(level logrus.Level, fn logrus.LogFunction) {
mlog.LogFn(level, fn)
}
func Trace(args ...interface{}) {
mlog.Trace(args...)
}
func Debug(args ...interface{}) {
mlog.Debug(args...)
}
func Info(args ...interface{}) {
mlog.Info(args...)
}
func Print(args ...interface{}) {
mlog.Print(args...)
}
func Warn(args ...interface{}) {
mlog.Warn(args...)
}
func Warning(args ...interface{}) {
mlog.Warning(args...)
}
func Error(args ...interface{}) {
mlog.Error(args...)
}
func Fatal(args ...interface{}) {
mlog.Fatal(args...)
}
func Panic(args ...interface{}) {
mlog.Panic(args...)
}
func TraceFn(fn logrus.LogFunction) {
mlog.TraceFn(fn)
}
func DebugFn(fn logrus.LogFunction) {
mlog.DebugFn(fn)
}
func InfoFn(fn logrus.LogFunction) {
mlog.InfoFn(fn)
}
func PrintFn(fn logrus.LogFunction) {
mlog.PrintFn(fn)
}
func WarnFn(fn logrus.LogFunction) {
mlog.WarnFn(fn)
}
func WarningFn(fn logrus.LogFunction) {
mlog.WarningFn(fn)
}
func ErrorFn(fn logrus.LogFunction) {
mlog.ErrorFn(fn)
}
func FatalFn(fn logrus.LogFunction) {
mlog.FatalFn(fn)
}
func PanicFn(fn logrus.LogFunction) {
mlog.PanicFn(fn)
}
func Logln(level logrus.Level, args ...interface{}) {
mlog.Logln(level, args...)
}
func Traceln(args ...interface{}) {
mlog.Traceln(args...)
}
func Debugln(args ...interface{}) {
mlog.Debugln(args...)
}
func Infoln(args ...interface{}) {
mlog.Infoln(args...)
}
func Println(args ...interface{}) {
mlog.Println(args...)
}
func Warnln(args ...interface{}) {
mlog.Warnln(args...)
}
func Warningln(args ...interface{}) {
mlog.Warningln(args...)
}
func Errorln(args ...interface{}) {
mlog.Errorln(args...)
}
func Fatalln(args ...interface{}) {
mlog.Fatalln(args...)
}
func Panicln(args ...interface{}) {
mlog.Panicln(args...)
}
package main
import (
"github.com/astaxie/beego"
"hashrateNode/asyncLog"
"hashrateNode/log"
)
func main() {
asyncLog.SyncLogs()
log.InitLog(log.LogConfig{Path: "logs", Level: "debug", Save: 3})
beego.Run()
}
package models
import "math/big"
type CreteVmEvent struct {
Ip string `json:"ip"`
VmId string `json:"vmid"`
}
type VmStatusEvent struct {
TaskId string `json:"taskId"`
Progress *big.Int `json:"progress"`
}
package models
import (
"github.com/ethereum/go-ethereum/common"
"math/big"
"time"
)
// HeaderInfo 请求头的信息
type HeaderInfo struct {
CSRFPreventionToken string `json:"CSRFPreventionToken"`
Ticket string `json:"ticket"`
}
// VM 虚拟机的数据
type VM struct {
NewId string `json:"newId"` // 克隆虚拟机模版新id
VmId string `json:"vmId"` // 虚拟机模版id
Name string `json:"name"`
VmCfg *VmConfig `json:"vmConfig"`
User string `json:"user"`
Password string `json:"password"`
HeaderInfo *HeaderInfo `json:"headerInfo"`
}
// VmConfig 虚拟机的配置信息
type VmConfig struct {
CallerIp string `json:"callerIp"`
TaskId string `json:"taskId"`
Owner common.Address `json:"owner"`
Cpu string `json:"cpu"` // 指定虚拟CPU的类型、特性和配置。
Cores *big.Int `json:"cores"` // 设置每个CPU插槽中的核心数量。
Sockets *big.Int `json:"sockets"` // 设置CPU插槽的数量。
Memory *big.Int `json:"memory"` // 设置虚拟机的内存大小。
OsType *big.Int `json:"osType"` // 客户操作系统的类型。
Gpu string `json:"gpu"` // 指定虚拟GPU的类型、特性和配置。
GpuNum *big.Int `json:"gpuNum"` // 设置虚拟机的Gpu数量。
StartDate time.Time `json:"startDate"` // 设置虚拟机的初始日期和时间。
Disk *big.Int `json:"disk"`
}
package models
import "math/big"
type VmStatusRep struct {
Status string `json:"status"`
}
type ResponseArr struct {
Data []interface{} `json:"data"`
}
type Response struct {
Data map[string]interface{} `json:"data"`
}
type ResponseStr struct {
Data string `json:"data"`
}
type QemuList struct {
Cpus int64 `json:"cpus"`
VmId int64 `json:"vmid"`
Pid int64 `json:"pid"`
MaxMem *big.Int `json:"maxMem"`
Template int64 `json:"template"`
}
type NetWorkResult struct {
Result []*NetworkInfo `json:"result"`
}
type NetworkInfo struct {
IpAddresses []IpInfo `json:"ip-addresses"`
Name string `json:"name"`
}
type IpInfo struct {
IpAddress string `json:"ip-address"`
Prefix int `json:"prefix"`
IpAddressType string `json:"ip-address-type"`
}
package pveApi
import (
"bytes"
"crypto/tls"
"encoding/json"
"fmt"
"github.com/astaxie/beego"
hashrateCommon "hashrateNode/common"
"hashrateNode/log"
"hashrateNode/models"
"io/ioutil"
"net/http"
"net/url"
)
var pveTicketApi, pveNodesPrefixApi string
var client *http.Client
var hostName string
func init() {
ip := beego.AppConfig.String("pve::ip")
port := beego.AppConfig.String("pve::port")
path := beego.AppConfig.String("pve::ticket_api")
hostName = beego.AppConfig.String("pve::host_name")
url := "https://" + ip + ":" + port
pveNodesPrefixApi = url + beego.AppConfig.String("pve::nodes_api") + fmt.Sprintf("/%s/qemu", hostName)
pveTicketApi = url + path
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // 忽略 SSL 证书错误
}
client = &http.Client{Transport: tr}
}
// GetCreateVmTicket 获取调用api的ticket
func GetCreateVmTicket() (*models.HeaderInfo, error) {
data := url.Values{}
data.Set("username", beego.AppConfig.String("pve::user"))
data.Set("password", beego.AppConfig.String("pve::pass"))
isSuccess, _, result, err := sendPostForm(pveTicketApi, data, nil)
if err != nil || !isSuccess {
return nil, err
}
ticket := new(models.HeaderInfo)
dataMarshal, err := json.Marshal(result)
if err != nil {
log.Error("GetCreateVmTicket json marshal error:", err)
return nil, err
}
err = json.Unmarshal(dataMarshal, ticket)
if err != nil {
log.Error("GetCreateVmTicket json Unmarshal error:", err)
return nil, err
}
ticket.Ticket = beego.AppConfig.String("pve::access_prefix") + ticket.Ticket
return ticket, nil
}
func StartVm(vm *models.VM) (interface{}, error) {
uriSuffix := fmt.Sprintf("/%s/status/start", vm.NewId)
uri := pveNodesPrefixApi + uriSuffix
data := url.Values{}
data.Set("node", hostName)
data.Set("vmid", vm.NewId)
isSuccess, _, result, err := sendPostForm(uri, data, vm.HeaderInfo)
if err != nil || !isSuccess {
return nil, err
}
return result, nil
}
// CreateVm 通过模版克隆对应的vm
func CreateVm(vm *models.VM) (interface{}, error) {
uriSuffix := fmt.Sprintf("/%s/clone", vm.VmId)
uri := pveNodesPrefixApi + uriSuffix
data := url.Values{}
data.Set("node", hostName)
data.Set("vmid", vm.VmId)
data.Set("newid", vm.NewId)
data.Set("name", vm.Name)
isSuccess, _, result, err := sendPostForm(uri, data, vm.HeaderInfo)
if err != nil || !isSuccess {
return nil, err
}
return result, nil
}
// SetVmConfig 设置vm的配置信息
func SetVmConfig(vm *models.VM) (interface{}, error) {
uriSuffix := fmt.Sprintf("/%s/config", vm.NewId)
uri := pveNodesPrefixApi + uriSuffix
data := url.Values{}
data.Set("node", hostName)
data.Set("vmid", vm.NewId)
data.Set("cores", vm.VmCfg.Cores.String())
data.Set("sockets", vm.VmCfg.Sockets.String())
data.Set("memory", vm.VmCfg.Memory.String())
isSuccess, _, result, err := sendPostForm(uri, data, vm.HeaderInfo)
if err != nil || !isSuccess {
return nil, err
}
return result, nil
}
func GetVmNetWork(vm *models.VM) ([]*models.NetworkInfo, error) {
uriSuffix := fmt.Sprintf("/%s/agent/network-get-interfaces", vm.NewId)
uri := pveNodesPrefixApi + uriSuffix
isSuccess, _, resp, err := sendGetRequest(uri, vm.HeaderInfo)
if err != nil || !isSuccess {
return nil, err
}
networkResult := &models.NetWorkResult{}
respMarshal, err := json.Marshal(resp)
if err != nil {
return nil, err
}
if err := json.Unmarshal(respMarshal, networkResult); err != nil {
fmt.Println("JSON解析错误:", err)
return nil, err
}
return networkResult.Result, nil
}
// VmStatus 获取虚拟机的状态 stopped|running
func VmStatus(vm *models.VM) (*models.VmStatusRep, error) {
uriSuffix := fmt.Sprintf("/%s/status/current", vm.NewId)
uri := pveNodesPrefixApi + uriSuffix
isSuccess, _, resp, err := sendGetRequest(uri, vm.HeaderInfo)
if err != nil || !isSuccess {
return nil, err
}
vmStatus := &models.VmStatusRep{}
respMarshal, err := json.Marshal(resp)
if err != nil {
return nil, err
}
if err := json.Unmarshal(respMarshal, vmStatus); err != nil {
fmt.Println("JSON解析错误:", err)
return nil, err
}
return vmStatus, nil
}
func GetQemuList(headerInfo *models.HeaderInfo) ([]*models.QemuList, error) {
isSuccess, responseArr, _, err := sendGetRequest(pveNodesPrefixApi, headerInfo)
if err != nil || !isSuccess {
return nil, err
}
qemuList := make([]*models.QemuList, 0)
respMarshal, err := json.Marshal(responseArr)
if err != nil {
return nil, err
}
if err := json.Unmarshal(respMarshal, qemuList); err != nil {
fmt.Println("JSON解析错误:", err)
return nil, err
}
return qemuList, nil
}
func SetVmLoginUser(vm *models.VM) (interface{}, error) {
uriSuffix := fmt.Sprintf("/%s/agent/set-user-password", vm.NewId)
uri := pveNodesPrefixApi + uriSuffix
data := url.Values{}
data.Set("node", hostName)
data.Set("vmid", vm.NewId)
data.Set("password", vm.VmCfg.Cores.String())
data.Set("username", vm.VmCfg.Sockets.String())
isSuccess, _, result, err := sendPostForm(uri, data, vm.HeaderInfo)
if err != nil || !isSuccess {
return nil, err
}
return result, nil
}
// sendPostForm 发送postForm请求
func sendPostForm(uri string, data url.Values, headInfo *models.HeaderInfo) (bool, []interface{}, map[string]interface{}, error) {
request, err := http.NewRequest("POST", uri, bytes.NewBufferString(data.Encode()))
if err != nil {
return false, nil, nil, err
}
if headInfo != nil {
request.Header.Set("Cookie", headInfo.Ticket)
request.Header.Set("CSRFPreventionToken", headInfo.CSRFPreventionToken)
}
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
isSuccess, responseArr, response, err := handlerResponse(request)
if err != nil {
return false, nil, nil, err
}
log.Infof("request uri:%s , request method:%s,request result:%s", uri, "post", response)
return isSuccess, responseArr, response, nil
}
// sendGetRequest 发送Get请求
func sendGetRequest(uri string, headInfo *models.HeaderInfo) (bool, []interface{}, map[string]interface{}, error) {
request, err := http.NewRequest("GET", uri, nil)
if headInfo != nil {
request.Header.Set("Cookie", headInfo.Ticket)
request.Header.Set("CSRFPreventionToken", headInfo.CSRFPreventionToken)
}
isSuccess, responseArr, response, err := handlerResponse(request)
if err != nil {
return false, nil, nil, err
}
log.Infof("request uri:%s,request method:%s,request result:%s", uri, "get", response)
return isSuccess, responseArr, response, nil
}
// handlerResponse 处理相应数据
func handlerResponse(request *http.Request) (bool, []interface{}, map[string]interface{}, error) {
resp, err := client.Do(request)
if err != nil {
log.Errorf("Send get request error: %s , uri: %s", err.Error(), request.URL.String())
return false, nil, nil, err
}
defer resp.Body.Close()
if resp.StatusCode != hashrateCommon.SuccessCode {
log.Error("Send post request failed:", resp.Status)
return false, nil, nil, nil
}
readAllResult, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取响应内容错误:", err)
return false, nil, nil, err
}
result1 := &models.ResponseStr{}
err = json.Unmarshal(readAllResult, result1)
if err != nil {
log.Warning("json unmarshal responseStr error:", err)
}
if result1.Data != "" {
return true, nil, nil, nil
}
result2 := &models.ResponseArr{}
err = json.Unmarshal(readAllResult, result2)
if err != nil {
log.Warning("json unmarshal responseStr error:", err)
}
if len(result2.Data) > 0 {
return true, result2.Data, nil, nil
}
result := &models.Response{}
err = json.Unmarshal(readAllResult, result)
if err != nil {
log.Error("json Unmarshal error:", err)
return false, nil, nil, err
}
return true, nil, result.Data, nil
}
package test
import (
"fmt"
"hashrateNode/asyncLog"
"net/http"
"net/http/httptest"
"path/filepath"
"runtime"
"testing"
"github.com/astaxie/beego"
. "github.com/smartystreets/goconvey/convey"
)
func init() {
_, file, _, _ := runtime.Caller(0)
apppath, _ := filepath.Abs(filepath.Dir(filepath.Join(file, ".."+string(filepath.Separator))))
beego.TestBeegoInit(apppath)
}
// TestBeego is a sample to run an endpoint test
func TestBeego(t *testing.T) {
r, _ := http.NewRequest("GET", "/", nil)
w := httptest.NewRecorder()
beego.BeeApp.Handlers.ServeHTTP(w, r)
beego.Trace("testing", "TestBeego", "Code[%d]\n%s", w.Code, w.Body.String())
Convey("Subject: Test Station Endpoint\n", t, func() {
Convey("Status Code Should Be 200", func() {
So(w.Code, ShouldEqual, 200)
})
Convey("The Result Should Not Be Empty", func() {
So(w.Body.Len(), ShouldBeGreaterThan, 0)
})
})
}
func TestIpAddressCondition(t *testing.T) {
condition := asyncLog.IsCreateVmCondition("13.38.146.66")
fmt.Println("condition:", condition)
}
package utils
import (
"context"
"crypto/ecdsa"
"encoding/json"
"fmt"
"github.com/astaxie/beego"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/oschwald/geoip2-golang"
"hashrateNode/log"
"math"
"math/big"
"net"
"time"
)
// EarthRadius 地球半径(单位:千米)
const EarthRadius = 6371
// Coordinates 经纬度坐标结构体
type Coordinates struct {
Latitude float64 // 纬度
Longitude float64 // 经度
}
// EthGetTransactionCount 获取账户nonce
func EthGetTransactionCount(client *ethclient.Client, param string) (uint64, error) {
ctx := context.Background()
addr := common.HexToAddress(param)
nonce, err := client.NonceAt(ctx, addr, nil)
return nonce, err
}
func GetTranOpts() (*bind.TransactOpts, error) {
prv := beego.AppConfig.String("sendTranPrv")
key, err := StringToPrivateKey(prv)
if err != nil {
return nil, err
}
chainID, _ := beego.AppConfig.Int64("chainID")
auth, err := bind.NewKeyedTransactorWithChainID(key, big.NewInt(chainID))
if err != nil {
return nil, err
}
return auth, nil
}
// StringToPrivateKey 解析私钥
func StringToPrivateKey(privateKeyStr string) (*ecdsa.PrivateKey, error) {
privateKeyByte, err := hexutil.Decode(privateKeyStr)
if err != nil {
return nil, err
}
privateKey, err := crypto.ToECDSA(privateKeyByte)
if err != nil {
return nil, err
}
return privateKey, nil
}
func Marshal(param interface{}) []byte {
byteInfo, _ := json.Marshal(param)
return byteInfo
}
func GetFormatTime(timestamp int64) string {
return time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
}
// 将角度转换为弧度
func degreesToRadians(degrees float64) float64 {
return degrees * (math.Pi / 180.0)
}
func GetIpAddr(ipAddress string) *Coordinates {
// 打开 MaxMind 的 GeoIP2 数据库文件
db, err := geoip2.Open("GeoLite2-City.mmdb")
if err != nil {
log.Error(" geoip2 open error:", err)
return nil
}
defer db.Close()
// 解析 IP 地址
ip := net.ParseIP(ipAddress)
// 查询 IP 地址的位置信息
record, err := db.City(ip)
if err != nil {
log.Error("Get ip city error:", err)
return nil
}
// 打印经纬度信息
fmt.Printf("IP地址: %s\n", ipAddress)
fmt.Printf("经度: %f\n", record.Location.Longitude)
fmt.Printf("纬度: %f\n", record.Location.Latitude)
res := &Coordinates{
Latitude: record.Location.Latitude,
Longitude: record.Location.Longitude,
}
return res
}
// CalculateDistance 计算两个经纬度坐标之间的距离(单位:千米)
func CalculateDistance(coord1, coord2 *Coordinates) float64 {
lat1 := degreesToRadians(coord1.Latitude)
lat2 := degreesToRadians(coord2.Latitude)
lon1 := degreesToRadians(coord1.Longitude)
lon2 := degreesToRadians(coord2.Longitude)
// Haversine 公式
dlon := lon2 - lon1
dlat := lat2 - lat1
a := math.Pow(math.Sin(dlat/2), 2) + math.Cos(lat1)*math.Cos(lat2)*math.Pow(math.Sin(dlon/2), 2)
c := 2 * math.Atan2(math.Sqrt(a), math.Sqrt(1-a))
distance := EarthRadius * c
return distance
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment