nodes.rb 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # frozen_string_literal: true
  2. require 'neo4j'
  3. # Node setup
  4. class Node
  5. include Neo4j::ActiveNode
  6. property :node_id, constraint: :unique
  7. property :name
  8. property :ip
  9. property :public_ip
  10. property :size
  11. property :state
  12. property :ami
  13. has_one :out, :subnet, rel_class: :NodeSubnet
  14. has_one :out, :az, rel_class: :NodeAz
  15. has_one :out, :sshkey, rel_class: :NodeSshKey
  16. has_one :out, :account, rel_class: :NodeAccount
  17. end
  18. # SSH key class
  19. class SshKey
  20. include Neo4j::ActiveNode
  21. property :name
  22. property :account
  23. end
  24. # Relationship with subnet
  25. class NodeSubnet
  26. include Neo4j::ActiveRel
  27. from_class :Node
  28. to_class :Subnet
  29. type :subnet
  30. end
  31. # Relationship with az
  32. class NodeAz
  33. include Neo4j::ActiveRel
  34. from_class :Node
  35. to_class :Az
  36. type :az
  37. end
  38. # Relationship with key
  39. class NodeSshKey
  40. include Neo4j::ActiveRel
  41. from_class :Node
  42. to_class :SshKey
  43. type :sshkey
  44. end
  45. # Relationship with account
  46. class NodeAccount
  47. include Neo4j::ActiveRel
  48. from_class :Node
  49. to_class :AwsAccount
  50. type :owner
  51. end
  52. # Relationship with account
  53. class SshKeyAccount
  54. include Neo4j::ActiveRel
  55. from_class :SshKey
  56. to_class :AwsAccount
  57. type :owner
  58. end