310
321
public Address unassign( ) {
311
this.transition( State.assigned, State.allocated, false, true, //
312
new SplitTransition( Transition.unassigning ) {
314
if ( !Address.this.isSystemOwned( ) ) {
322
if( this.isSystemOwned( ) ) {
323
this.transition( State.assigned, State.unallocated, false, true, //
324
new SplitTransition( Transition.unassigning ) {
326
public void top( ) {}
329
public void bottom( ) {
315
330
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_UNASSIGN, "user=" + Address.this.userId )
316
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
317
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
320
VmInstance vm = VmInstances.getInstance( ).lookup( Address.this.getInstanceId( ) );
321
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_UNASSIGN, "user=" + vm.getOwnerId( ) )
322
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
323
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
324
} catch ( NoSuchElementException e ) {
325
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_UNASSIGN, "user=<unknown>" )
326
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
327
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
331
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
332
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
333
Address.this.instanceId = UNASSIGNED_INSTANCEID;
334
Address.this.instanceAddress = UNASSIGNED_INSTANCEADDR;
335
Address.this.userId = UNALLOCATED_USERID;
336
Address.removeAddress( Address.this.name );
332
public void bottom( ) {
333
Address.this.instanceId = UNASSIGNED_INSTANCEID;
334
Address.this.instanceAddress = UNASSIGNED_INSTANCEADDR;
341
this.transition( State.assigned, State.allocated, false, true, new SplitTransition( Transition.unassigning ) {
342
public void top( ) {}
343
public void bottom( ) {
345
VmInstance vm = VmInstances.getInstance( ).lookup( Address.this.getInstanceId( ) );
346
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_UNASSIGN, "user=" + vm.getOwnerId( ) )
347
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
348
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
349
} catch ( NoSuchElementException e ) {
350
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_UNASSIGN, "user=<unknown>" )
351
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
352
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
354
Address.this.instanceId = UNASSIGNED_INSTANCEID;
355
Address.this.instanceAddress = UNASSIGNED_INSTANCEADDR;
340
363
public Address pendingAssignment( ) {
341
this.transition( State.allocated, State.impending, false, true, //
342
new SplitTransition( Transition.system ) {
343
public void bottom( ) {
344
Address.this.state.set( State.allocated, false );
347
public void top( ) {}
364
this.transition( State.unallocated, State.impending, false, true, new SplitTransition( Transition.allocating ) {
366
Address.this.instanceId = PENDING_ASSIGNMENT;
367
Address.this.instanceAddress = UNASSIGNED_INSTANCEADDR;
368
Address.this.userId = "eucalyptus";
370
Addresses.getInstance( ).enable( Address.this.name );
371
} catch ( NoSuchElementException e ) {
373
Addresses.getInstance( ).register( Address.this );
374
} catch ( NoSuchElementException e1 ) {
352
383
public Address assign( final String instanceId, final String instanceAddr ) {
353
this.state.compareAndSet( State.impending, State.allocated, true, false );
354
this.transition( State.allocated, State.assigned, false, true, //
355
new SplitTransition( Transition.assigning ) {
357
Address.this.setInstanceId( instanceId );
358
Address.this.setInstanceAddress( instanceAddr );
361
public void bottom( ) {
362
if ( !Address.this.isSystemOwned( ) ) {
363
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_ASSIGN, "user="+Address.this.userId )
364
.append( "address="+Address.this.name, "instance="+Address.this.instanceId, "instance-address=" )
365
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
368
VmInstance vm = VmInstances.getInstance( ).lookup( Address.this.getInstanceId( ) );
369
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_ASSIGN, "user=" + vm.getOwnerId( ) )
370
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
371
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
372
} catch ( NoSuchElementException e ) {
373
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_ASSIGN, "user=<unknown>" )
374
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
375
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
384
if( this.state.compareAndSet( State.impending, State.impending, true, true ) ) {
385
this.transition( State.impending, State.assigned, true, true, //
386
new SplitTransition( Transition.assigning ) {
388
Address.this.setInstanceId( instanceId );
389
Address.this.setInstanceAddress( instanceAddr );
393
public void bottom( ) {
394
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_ASSIGN, "user="+Address.this.userId )
395
.append( "address="+Address.this.name, "instance="+Address.this.instanceId, "instance-address=" )
396
.append( Address.this.instanceAddress, "SYSTEM" ).info( );
401
this.transition( State.allocated, State.assigned, false, true, //
402
new SplitTransition( Transition.assigning ) {
404
Address.this.setInstanceId( instanceId );
405
Address.this.setInstanceAddress( instanceAddr );
409
public void bottom( ) {
411
VmInstance vm = VmInstances.getInstance( ).lookup( Address.this.getInstanceId( ) );
412
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_ASSIGN, "user=" + vm.getOwnerId( ) )
413
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
414
.append( Address.this.instanceAddress, "USER" ).info( );
415
} catch ( NoSuchElementException e ) {
416
EventRecord.here( Address.class, EventClass.ADDRESS, EventType.ADDRESS_ASSIGN, "user=<unknown>" )
417
.append( "address=" + Address.this.name, "instance=" + Address.this.instanceId, "instance-address=" )
418
.append( Address.this.instanceAddress, "USER" ).info( );