Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
emulab-devel
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
143
Issues
143
List
Boards
Labels
Service Desk
Milestones
Merge Requests
6
Merge Requests
6
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
emulab
emulab-devel
Commits
5cc03c0e
Commit
5cc03c0e
authored
Sep 10, 2008
by
Leigh B. Stoller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Checkpoint some small changes made for Geni.
parent
a3dd5200
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
156 additions
and
31 deletions
+156
-31
db/Interface.pm.in
db/Interface.pm.in
+53
-0
db/Lan.pm.in
db/Lan.pm.in
+43
-0
db/Node.pm.in
db/Node.pm.in
+60
-31
No files found.
db/Interface.pm.in
View file @
5cc03c0e
...
...
@@ -89,6 +89,17 @@ sub LookupAll($$$)
$
interface
->{
"DBROW"
}
=
$
rowref
;
bless
($
interface
,
$
class
);
#
#
Grab
the
wires
table
entry
.
#
my
$
wires_result
=
DBQueryWarn
(
"select * from wires "
.
"where node_id1='$nodeid' and "
.
" card1='$card' and port1='$port'"
);
if
($
wires_result
&&
$
wires_result
->
numrows
)
{
$
interface
->{
'WIRES'
}
=
$
wires_result
->
fetchrow_hashref
();
}
#
Cache
by
card
,
port
and
by
iface
$
all_interfaces
{
"$nodeid:$card:$port"
}
=
$
interface
;
$
all_interfaces
{
"$nodeid:$iface"
}
=
$
interface
;
...
...
@@ -113,6 +124,11 @@ sub role($) { return field($_[0], 'role'); }
sub
type
($)
{
return
field
($
_
[
0
],
'interface_type'
);
}
sub
mask
($)
{
return
field
($
_
[
0
],
'mask'
);
}
sub
uuid
($)
{
return
field
($
_
[
0
],
'uuid'
);
}
#
Wires
table
sub
wire_type
($)
{
return
$
_
[
0
]->{
'WIRES'
}->{
'type'
};
}
sub
switch_id
($)
{
return
$
_
[
0
]->{
'WIRES'
}->{
'node_id2'
};
}
sub
switch_card
($)
{
return
$
_
[
0
]->{
'WIRES'
}->{
'card2'
};
}
sub
switch_port
($)
{
return
$
_
[
0
]->{
'WIRES'
}->{
'port2'
};
}
sub
IsExperimental
($)
{
...
...
@@ -150,6 +166,17 @@ sub Lookup($$$$)
$
interface
->{
"DBROW"
}
=
$
query_result
->
fetchrow_hashref
();
bless
($
interface
,
$
class
);
#
#
Grab
the
wires
table
entry
.
#
$
query_result
=
DBQueryWarn
(
"select * from wires "
.
"where node_id1='$nodeid' and "
.
" card1='$card' and port1='$port'"
);
if
($
query_result
&&
$
query_result
->
numrows
)
{
$
interface
->{
'WIRES'
}
=
$
query_result
->
fetchrow_hashref
();
}
#
Cache
by
card
,
port
and
by
iface
my
$
iface
=
$
interface
->
iface
();
...
...
@@ -328,6 +355,32 @@ sub Stringify($)
return
"[Interface: $nodeid:$iface]"
;
}
#
#
Temporary
cruft
for
geni
widearea
switches
.
#
sub
LookUpWideAreaSwitch
($$)
{
my
($
class
,
$
hrn
)
=
@
_
;
my
$
safe_hrn
=
DBQuoteSpecial
($
hrn
);
my
$
query_result
=
DBQueryWarn
(
"select node_id from widearea_switches "
.
"where hrn=$safe_hrn"
);
return
undef
if
(
!$query_result);
if
($
query_result
->
numrows
)
{
my
($
switch_id
)
=
$
query_result
->
fetchrow_array
();
return
$
switch_id
;
}
my
$
next_id
=
TBGetUniqueIndex
(
'next_switch'
,
1
);
my
$
switch_id
=
"widearea_switch$next_id"
;
return
$
switch_id
if
(
DBQueryWarn
(
"insert into widearea_switches set "
.
" hrn=$safe_hrn, node_id='$switch_id'"
));
return
undef
;
}
#
_Always_
make
sure
that
this
1
is
at
the
end
of
the
file
...
1
;
db/Lan.pm.in
View file @
5cc03c0e
...
...
@@ -1430,6 +1430,13 @@ sub SetAttribute($$$;$)
return
$
self
->
GetMember
()->
SetAttribute
($
key
,
$
value
,
$
type
);
}
sub
memberid
($)
{
my
($
self
)
=
@
_
;
return
$
self
->
GetMember
()->
memberid
();
}
############################################################################
#
#
A
protolan
is
for
creating
a
lan
without
sending
it
to
the
DB
until
...
...
@@ -1772,6 +1779,42 @@ sub MemberList($)
return
keys
(%{
$
self
->{
'MEMBERS'
}
});
}
#
#
Return
member
node
.
#
sub
MemberNode
($$)
{
my
($
self
,
$
member
)
=
@
_
;
return
undef
if
(
! exists($self->{'MEMBERS'}->{$member}));
return
$
self
->{
'MEMBERS'
}->{$
member
}->{
'node'
};
}
#
#
Return
the
ifacelist
#
sub
IfaceList
($)
{
my
($
self
)
=
@
_
;
return
keys
(%{
$
self
->{
'IFACES'
}
});
}
#
#
Return
member
node
.
#
sub
IfaceNode
($$)
{
my
($
self
,
$
member
)
=
@
_
;
return
undef
if
(
! exists($self->{'IFACES'}->{$member}));
return
$
self
->{
'IFACES'
}->{$
member
}->{
'node'
};
}
#
#
Set
value
of
an
attribute
.
#
...
...
db/Node.pm.in
View file @
5cc03c0e
...
...
@@ -196,6 +196,7 @@ sub field($$) { return ((! ref($_[0])) ? -1 : $_[0]->{'DBROW'}->{$_[1]}); }
sub
node_id
($)
{
return
field
($
_
[
0
],
'node_id'
);
}
sub
uuid
($)
{
return
field
($
_
[
0
],
'uuid'
);
}
sub
type
($)
{
return
field
($
_
[
0
],
'type'
);
}
sub
role
($)
{
return
field
($
_
[
0
],
'role'
);
}
sub
eventstate
($)
{
return
field
($
_
[
0
],
'eventstate'
);
}
sub
allocstate
($)
{
return
field
($
_
[
0
],
'allocstate'
);
}
sub
jailflag
($)
{
return
field
($
_
[
0
],
'jailflag'
);
}
...
...
@@ -234,27 +235,33 @@ sub Create($$$$)
my
$
isremote
=
$
typeinfo
->
isremotenode
();
if
($
typeinfo
->
virtnode_capacity
(\$
virtnode_capacity
))
{
print
STDERR
"*** No virtnode_capacity for $type! Using zero.
\n
"
;
$
virtnode_capacity
=
0
;
}
if
($
typeinfo
->
adminmfs_osid
(\$
adminmfs_osid
))
{
print
STDERR
"*** No adminmfs osid for $type!
\n
"
;
return
undef
;
}
#
Find
object
for
the
adminfs
.
if
(
defined
($
adminmfs_osid
))
{
$
adminmfs
=
OSinfo
->
Lookup
($
adminmfs_osid
);
if
($
role
eq
"testnode"
)
{
if
($
typeinfo
->
virtnode_capacity
(\$
virtnode_capacity
))
{
print
STDERR
"*** No virtnode_capacity for $type! Using zero.
\n
"
;
$
virtnode_capacity
=
0
;
}
if
($
typeinfo
->
adminmfs_osid
(\$
adminmfs_osid
))
{
print
STDERR
"*** No adminmfs osid for $type!
\n
"
;
return
undef
;
}
#
Find
object
for
the
adminfs
.
if
(
defined
($
adminmfs_osid
))
{
$
adminmfs
=
OSinfo
->
Lookup
($
adminmfs_osid
);
}
else
{
$
adminmfs
=
OSinfo
->
Lookup
(
TBOPSPID
(),
$
MFS_INITIAL
);
}
if
(
!defined($adminmfs)) {
print
STDERR
"*** Could not find OSinfo object for adminmfs!
\n
"
;
return
undef
;
}
$
osid
=
$
adminmfs
->
osid
();
$
opmode
=
$
adminmfs
->
op_mode
();
}
else
{
$
adminmfs
=
OSinfo
->
Lookup
(
TBOPSPID
(),
$
MFS_INITIAL
);
}
if
(
!defined($adminmfs)) {
print
STDERR
"*** Could not find OSinfo object for adminmfs!
\n
"
;
return
undef
;
$
osid
=
0
;
$
opmode
=
""
;
}
$
osid
=
$
adminmfs
->
osid
();
$
opmode
=
$
adminmfs
->
op_mode
();
$
state
=
$
STATE_INITIAL
;
#
...
...
@@ -282,22 +289,24 @@ sub Create($$$$)
" op_mode_timestamp=unix_timestamp(NOW())"
)
or
goto
bad
;
DBQueryWarn
(
"insert into node_hostkeys (node_id) "
.
"values ('$node_id')"
)
or
goto
bad
;
if
($
role
eq
"testnode"
)
{
DBQueryWarn
(
"insert into node_hostkeys (node_id) "
.
"values ('$node_id')"
)
or
goto
bad
;
DBQueryWarn
(
"insert into node_status "
.
"(node_id, status, status_timestamp) "
.
"values ('$node_id', 'down', now()) "
)
or
goto
bad
;
DBQueryWarn
(
"insert into node_status "
.
"(node_id, status, status_timestamp) "
.
"values ('$node_id', 'down', now()) "
)
or
goto
bad
;
DBQueryWarn
(
"insert into node_activity "
.
"(node_id) values ('$node_id')"
)
or
goto
bad
;
DBQueryWarn
(
"insert into node_activity "
.
"(node_id) values ('$node_id')"
)
or
goto
bad
;
DBQueryWarn
(
"insert into node_utilization "
.
"(node_id) values ('$node_id')"
)
or
goto
bad
;
DBQueryWarn
(
"insert into node_utilization "
.
"(node_id) values ('$node_id')"
)
or
goto
bad
;
}
if
(
defined
($
experiment
))
{
my
$
exptidx
=
$
experiment
->
idx
();
...
...
@@ -1751,6 +1760,26 @@ sub GetGeniSliverInfo($$;$)
return 0;
}
#
# Set the status slot for a node.
#
sub SetStatus($$)
{
my ($self, $status) = @_;
# Must be a real reference.
return -1
if (! ref($self));
my $node_id = $self->node_id();
return -1
if (! DBQueryWarn("update node_status set status='
$
status
' ".
"where node_id='
$
node_id
'"));
$self->{"DBROW"}->{'
node_status
'} = $status;
return 0;
}
# _Always_ make sure that this 1 is at the end of the file...
1;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment